DDD深思,对象装备模型

mewleo 07-05-19

关于该思想的实现,请参照 实现对象装备模式http://www.javaeye.com/topic/81086



本来想说很多客套话的,但拿捏不好语气,该帖子主要讨论一个草根想法。
大家一看就知道我是新鸟一只,只是在这混了好久,第一次发言,想让大牛们给我指导一下,我的收获会很大。
先谢谢了,请尽量看完。(如时间不充足,请看红色部分!)

草根来源:
场景——一个自运营的门户网站
系统——考虑了很久,打算用DWR+MeshCMS+guice+Db4o,轻轻轻量级。。。。
思路——使用基于文件的内容管理,生成静态的内容数据页,动态交互使用ServerPush,完全OO模型,直接对象持久
问题——使用对象数据库,那我的领域模型怎么工作,要DAO合适吗?魔鬼告诉我,db4o的session太好用了,耦合吧-_-
思考——在学习google的guice期间,当时正好看到方法注入,本想跳过,一般我不用,但突然想到了,既然db4o不适合
存储复杂业务的对象,那么我在对象取出时给他注入他将要用到的业务逻辑方法。。。。。Service轻松了好多,好像更
OO了。。。。于是,请看下文

OO的特性里,继承、封装、多态,我又联想到一个名词,那就是包装。与其说DDD中有贫血模型,不如说
是裸体模型,他没有穿任何衣服、装备、宠物、家族等等(扯到网络游戏里了)。不过事实就是如此,我们
的生活中不可能离开这些,那在编程的原始社会,从低级到高级,好像人会站立行走了,从过程到OO好像
人们有语言和沟通了,越来越接近自然的法则就是,我们的对象要穿衣服了,不光要有衣服,还要有手套、
工具、坐骑、家(持久层?!)。玩过变装类游戏角色的人知道,当他们换衣服时等于换了一种角色
换了一种特有属性,唯一不同的就是基础属性,他的动作和专注点发生了变化,那么,我们的软件中,每个
对象好像不是一种角色,只完成单一的任务,而是在不同的场景,使用不同的服务,发生不同的动作,造成
不同的变化,那么每一套对象之外的动作、属性、状态是不是像装备一样包装着这个对象呢?!是不是可以
给对象准备好一套装备,在他要去工作或者执行任务以前把他武装起来而不是裸体上阵呢?我想问问对象,
你喜欢极品装备吗? 当然他回答不了我,但我列了几个我自以为的可选答案:
A.无所谓(仍然保持原始的性感美丽)
B.喜欢(向往现代文明)
C.贼喜欢(迫切的愿望说明他厌恶了裸奔的日子)
D.讨厌,就是喜欢暴露 (。。。。。。。你男的女的?不对,公的母的?还不对,雄的雌的?反正变态)

这只是一个雏形,一种想法和冲动,我没有脑力和能力继续实践他,至少目前还没有,要休息下脑子才可以,
而且我的知识结构混乱,也不敢继续想,但是直接告诉我这个道路在黑暗中有一思光明,好像从小到大我的
这种感觉总是很准。还有一点想说的是,程序员的性格和兴趣不同,就好像游戏里的不同职业团队里的不同
角色,总是可以完成任务,不在乎哪中道路达到目标。只是我感觉周围有像我一样,那种路都不想选择而又
想要到达目的地的人,仍然在继续找寻一个新的道路(“世上本没有路,走的人多了便成了路”)。

在JavaEye的讨论帖http://mewleo.javaeye.com/blog/79536

banq
2007-05-21 15:46

欢迎参加这个帖子讨论,发表你的意见:
http://www.jdon.com/article/31594.html