|
这个主题共有 1 回复 / 1 页 [
]
|
|
|
|
|
|
DDD项目中都是以失血模型存在着?
|
发表: 2007年12月10日 15:33
|
回复
|
|
|
这如何理解?DDD我觉得很是能自圆其说的一种设计思想.一直想把的什么失血和贫血,BO,VO,POJO,还有怎么分层跟DDD作一个整合.一些基层框架可以DDD提供服务,比如ibatis,我觉得这些东西如果放在DDD这么一个环境下能很好的解释. 但现在总感觉没突破这一层.
|
|
|
|
|
|
回复:DDD项目中都是以失血模型存在着?
|
发表: 2007年12月11日 10:11
|
回复
|
|
在DDD项目中,模型分三种:实体 值对象和服务,这三种组成一个完整丰富的充血模型,如果你只看到这三种之一元素:实体,发现实体只有setter/getter,就误认为这是一个失血或贫血模型,那么未免有点盲人摸象的味道。
以案例来说明吧:在JiveJdon3源码中,ForumMessage是一个实体,但它只是领域模型的一个元素,为了实现ForumMessage输出过滤功能,我创建了一个ForumMessageRender模型,其实是ForumMessage的Proxy,ForumMessageRender模型也属于领域模型一种,在其中我们实现了论坛业务复杂功能:输出过滤,如果你把这个功能放在ForumMessageService这个服务中实现,那么无疑你就范了MartinFowler反对的那种将模型变成失血,业务放在Service中实现的问题。
为什么我们总是在失血和贫血,BO,VO,POJO等概念上纠缠不清?因为这些都是不同高度层次的问题,但是程序员把它们当作同一个层次问题,那么当然得不出因果,就象鸡和蛋问题,如果你将鸡和蛋看成同一个层次,是鸡生蛋,还是蛋生鸡,没有结果,但是如果上帝告诉你,鸡比蛋高一个层次,问题就解决,同样,失血或充血模型比POJO/BO/VO等高一个层次,是从需求中直接来的,那么你就不会抓住一个POJO在微观世界反复研究它是失血还是充血,因为这个POJO只是一个结果。
相关讨论: http://www.jdon.com/jivejdon/forum/messageList.shtml?thread=31369
|
|
|
|