遵循域驱动设计(DDD)时,对于根聚合保留对恰好是单独聚合中根实体的内部实体的引用是否正确?
我认为这是不正确的,主要是因为这本关于蓝皮书的规则:
除了根ENTITY,AGGREGATE边界之外的任何内容都不能保存对内部任何内容的引用。根ENTITY可以将对内部ENTITIES的引用传递给其他对象,但是这些对象只能临时使用它们,并且它们可能不会保留引用。根可以将VALUE OBJECT的副本交给另一个对象,它发生什么都没有关系,因为它只是一个VALUE,不再与AGGREGATE有任何关联。
如果一个根聚合包含对另一个根聚合的引用,则违反了前者的边界,并且聚合的整个概念都已损坏,因此我认为,如果一个根聚合看起来像需要保留对另一个根聚合的引用,那么我需要创建一个不同的实体,该实体可能会与另一个根实体共享一些相同的成员,但不会具有全局标识,因为本书中的另一条规则指出:
根实体具有全球性。边界内的实体具有本地身份,仅在AGGREGATE内部具有唯一性。
我相信这将是正确的方法,但是由于它具有重复性和冗余性(当从纯DOP脱离DDD的上下文时),我要求提供一些反馈。