不变式与根对象

        一个大型的复杂项目而言,模型趋向于越来越大。 当模型发展到了某个规模,将 它作为整体来讨论很困难,理解不同部件之间的关系和交互变得很困难。

      因此,强化不变量通常也是有必要的。 不变量是在数据发生变化时必须维护的那些规则。 在许多对象持有正在发生变化的数据对象的引用时,不变量是很难实现和维护的
     使用 根对象可能会将内部对象的临时引用传递给外部对象,作为限制,当操作完成之后,外部对象不能再持有这个引用。 一种简单的实现方式是向外部对象传递值对象的副本。 

     在这些副本对象上发生了什么将不再重要,因为它不会以任何方式影响到聚合的一致性。 
      如果一个聚合中的对象被保存到数据库中,可以通过查询来获得的应该只有根对象。 其他的对象只能通过从根对象出发导航关联对象来获得。 聚合内的对象可以被允许持有对其他聚合的根对象的引用。 根实体拥有全局的标识符,并且有责任维护不变量。 内部的实体拥有内部的标识符。

     问题是现在客户程序必须先拥有一个对根的引用。 对大型的应用而言,这会变成一个问题,因为我们必须确保客户程序始终持有所需要对象的引用,或者持有另一个对象的引用,这个对象持有所需要对象的引用。 在设计中使用这样的规则将强制要求对象持有一系列它们并不需要持有的引用。 这增加了耦合性,创建了一系列并非真正需要的关联。

                                                                                                          ------DDD Quikly

浮沙之上勿筑高台
原文地址:https://www.cnblogs.com/stst/p/4905524.html