DDD领域驱动设计

Posted by Alexander Wang on November 16, 2016

聚合根

聚合根是大对象,具有唯一标志。而实体只是聚合根里面的一个对象。

聚合

聚合的本质是包含关系。

什么是聚合,对于订单来说,订单大对象是唯一的,是对外操作最小单元,那么订单就是聚合的,你创建、修改、取消订单都是对订单这个大对象进行操作,而不能对订单里面的明细单独操作。聚合维护了聚合根的数据一致性。

单独的订单明细事实上没有意义,只是依附在订单里面的一个对象。订单和订单里面的项是内聚的。内聚的好处是维护数据一致性,坏处是,修改任何一小部分都需要操作整个大对象,会伴随并发的问题。在移动营业厅的订单大对象里面,操作的子项被抽象出一个个creation,订单其实是个大的xml,每一次操作都是xml—>order—>xml。

聚合根之间通过id关联

对于通知来说,私信和模板之间没有聚合关系。没了私信模板依然存在,而没了模板,私信就不可见了,但是两者有独立的生存周期。所以两者的关系类似于串行的,模板在私信前面。

如果通知大对象是内聚的,那么模板应该被打成一个json到私信里面,私信ID是全局ID,然而事实上业务并不需要这样内聚。

汤雪华博客


Creative Commons License
This work is licensed under a CC A-S 4.0 International License.