领域中内聚的理解
领域中为什么要有内聚?
?????? 将关联减至最少的设计有助于简化对象之间的遍历,并在某种程度上限制关系的急剧增多。但大多数业务领域中的对象都具有十分复杂的联系,以至于最终会形成一个很长、很深的对象引用路径,我们不得不在这个路径上追踪对象。某种程度上,这种混乱状态反映了现实世界,因为现实世界很少有清晰的边界。软件设计中一个重要的问题。
?????? 问题的根源所在是模型,归根到底是由于模型中缺乏明确定义的边界,因此我们尽量使用某些模式使得模型更易于理解,设计更易于沟通。当模型被修改时,它将引导我们对实现做出修改。
?
什么是领域中的内聚
??????? Aggregate就是一组相关对象的集合,我们把它作为数据修改的单元。每个Aggregate都有一个根(root)和一个边界(boundary)。边界定义了Aggregate内部都有什么。在Aggregate中,根是唯一允许外部对象保持对它的引用的元素,而边界内部的对象之间则可以互相引用。
?
????
?上图中Car和Engine为根对象,而红线为边界,根据上面所说的,边界中的对象可以互相引用,即Car,Tire,Position,Wheel可以相互之间引用不作限制,同时根中的对象可以保存其他根对象的引用。但是根外的对象访问边界中的对象只能通过根进行访问,就如上图的Customer,我们不提倡直接访问Tire。