仓储的选择

在用四色图设计好对象之后,怎么样来选择仓储的使用。MI,PPT,Role,DESCRIPTION,哪些是需要把对象冬眠的。

四色图属于“做什么”“是什么”WHAT的方法。
而仓储属于“怎么做”HOW的方法。

这是两个层面事情,所以,四色图中不会涉及仓储。

而DDD是揉合WHAT和HOW,但注重两者分离的设计方法。

那么是不是还要把设计好的四色图,按照DDD,划分好实体、值对象、和服务。我看到DDD的书籍上描述,一般涉及到数据库查询操作和聚合的根都需要选择仓储。

2010年02月02日 10:11 "jeffrey4chartcrm"的内容
把设计好的四色图,按照DDD,划分好实体、值对象、和服务

是的,这是第二步。

有了实体这些领域模型,基本完成是什么或做什么WHAT的阶段。

然后进入实现阶段,也就是怎么做How阶段,如果实体领域模型是保存在数据库中的,那么就要使用仓储实现数据库中数据表和内存中实体对象之间的转换。

从四色图转换到DDD对象的过程中,有什么标准或者模式可循吗?

这个转换就是按照标准的对象设计原则来了,主要有一本书"对象设计:角色、责任和协作"(Object Design: Roles, Responsibilities, and Collaborations),可以和DDD对应衔接起来。

原来有一个简单对应法则,见这个帖子http://www.jdon.com/jivejdon/thread/36343,但是这只适合一些简单情况,不是准则,实体模型并一定完全反映真实实体,也就是四色图中PPT。实体对象可能是真实实体的抽象。

这个转换过程是一个创造性活动,创新创造就没有模式准则了,但是有对结果的评论标准,标准就是两个:
1.耦合coupling :关注类之间关系;对象之间的依赖程度;是依赖的量化;有松耦合和紧耦合;松耦合更易于导入变化。

2.凝聚cohesion : 关注类内部;一个类是否充分实现其职责目标?类中方法是否都是为实现这个职责服务的?高聚合代表鲁棒性 重用性和可理解性。

总的原则是:抽象Abstractions 职责Responsibilities 松耦合Loose-coupling 高聚合High-cohesion

理解职责是实现好的OO设计的关键。“Understanding responsibilities is key to good object-oriented design”—Martin Fowler

2010年02月02日 11:40 "banq"的内容
"对象设计:角色、责任和协作"(Object Design: Roles, Responsibilities, and Collaborations)

这本书很难找啊,网上书店都没有。