本章是领域驱动设计中,非常核心的一章。以下是大纲和读书笔记:
从领域对象的生命周期(创建,修改,存储,重建等)出发,引出两个关键问题:
1)如何友好的在整个生命周期维持其完整性。
2)要防止模型陷入生命周期的复杂性当中。
提出了一个解决之道,即聚合(aggregate)。聚合通过定义清晰边界,定义所属关系,保持内聚,来防止陷入领域模型复杂的依赖关系和生命阶段的完整性中。
聚合虽然可以解决上述问题,但是聚合对象的生成,不应该由其本身承载,主要原因:1)聚合目的主要聚焦于业务模型。2)聚合对象的生成比较复杂,不应该再把此职责划分到聚合。
于是,又引出了工厂,通过选择合适的工厂方法和工厂类,来生成聚合对象,entity,value object。最后,领域模型所承载的数据要持久化到数据库,又引出repository,好的repository可以屏蔽其存储的技术复杂性,并让你把精力专注于模型,例如声明式的存储。