读书人

DDD实践该血亏还是充血

发布时间: 2012-11-08 08:48:11 作者: rapoo

DDD实践,该贫血还是充血?
对于ddd,曾经有很多的争论,到底该选择贫血,充血,还是失血?我看了N多帖子,似乎都没有结论,中庸的人说了各种模型的优缺点,似乎是没有答案。
昨日看Pro Spring一书,2005年版的,书中早已给出了答案。
原则就是domain对象不依赖非domain对象。
什么意思呢,即domain对象不能依赖service,DAO等对象。然后尽可能的把职责落实到domain对象。
比如save方法,不应该赋予domain对象,因为要调用DAO对象,所以赋予service对象就可以了.
addOrderItem(Item item)方法应该赋予domain对象,应为item参数也是domain对象。

遵守了这个原则的好处是,domain对象可以被重用,不依赖于任何持久化逻辑。
domain对象不需要也不知道自己如何或是否被持久化了,内存有限的情况下,当需要用的时候从数据库读出来,不需要用的时候写回数据库。就像虚拟内存一样,我们的程序甚至不必关心何时内存页面被换出换入。 1 楼 pengzhoushuo 2010-12-02 兄弟,你说的貌似挺有道理的,但好像经不起推敲哦。

引用什么意思呢,即domain对象不能依赖service,DAO等对象。然后尽可能的把职责落实到domain对象。
比如save方法,不应该赋予domain对象,因为要调用DAO对象,所以赋予service对象就可以了.
addOrderItem(Item item)方法应该赋予domain对象,应为item参数也是domain对象。

addOrderItem方法,假如要在数据库加一条记录吧,在那里加?在domain对象,按你这种说话即domain对象不能依赖service,DAO等对象,那domain只能自己进行数据库操作了?或者调用另外一个domain,那另外一个domain又在哪里执行数据库插入操作呢? 2 楼 pengzhoushuo 2010-12-02 另外,假如save()改为save(Item item)呢

读书人网 >软件架构设计

热点推荐