>值对象包含一个List集合
集合里套集合?我们不能在集合概念上抽象一个分析准则,因为建模是因关注点不同而不同,没有定理的,是非常主观的。

今日严格根据Evans DDD重构了JiveJdon3,将值对象mesageVO从ForumMessage分离出来,将过滤输出明确作为规定Specification,并且整入ForumMessage,因为这些都是业务规则核心,应该成为富模型充血模型ForumMessage。

将ForumThread作为聚合根,而RootMessage作为聚合边界内树形结果的根节点,经过如此反复迭代,终于理清楚他们的之间关系,这带来巨大好处就是:面向内存对象编程和数据库持久化截然分开,两者可以独立异步执行,为将来分布式运行打开方向和基础。

论坛各种功能都依赖内存中的ForumThread,做到性能快,将来可拓展到并行计算等平台,以ForumThread为聚合根,如下图,维持内存中领域模型图,真正做到纲举目张。


[该贴被banq于2009-04-19 13:46修改过]


这样设计果然高明,整个对象图都可以在摆脱数据库的情况下存在.

Banq老师对Jdon论坛熟悉,考虑的也很周到,望老师您将您的思考过程共享下.

面向内存编程是否是您的思考准则呢?

聚合对面向对象的设计非常关键,这也是是否能设计好缓存的关键。