聚合和聚合根是作为单独的类实现的吗?

mpbci0fu  于 2021-07-12  发布在  Java
关注(0)|答案(1)|浏览(406)

关于ddd的讨论太多了,我希望能找到很多关于如何实现这些模式的代码示例。但没那么幸运。
使我困惑的是这个。聚合实体是表示为聚合根的实体,还是实现为单独的类?这里有几个例子,如果其中任何一个是真的,请回答。
他们是分开的班级

class Aggregate {
   private Entity aggregateRootEntity;
   //methods that keep invariants
}

没有单独的聚合类,而是表示聚合的聚合根类

class AggregateRootEntity {
   //id, fields, value objects references, other entities references
   //methods that keep invariants
}

任何实体都可以是聚合的,如果它用于事务范围,保持不变量,并“聚合”一些值对象

//This is aggregate:
class Entity {
   private List<ValueObject> valueObjects;
   //id, fields
   //methods that keep invariants
}
qeeaahzv

qeeaahzv1#

没有单独的聚合类,而是表示聚合的聚合根类
这个。
介绍ddd和“聚合”模式的参考书是eric evans领域驱动设计:解决软件核心的复杂性。
第5章讨论了在软件领域建模中使用的模式:实体、值、“域服务”等等。
第6章讨论了生命周期管理,其中他谈到了工厂、存储库和聚合:
聚合是一组相关对象,我们将其视为一个单元,用于数据更改。每个聚合都有根和边界。边界定义了聚合内部的内容。根是聚合中包含的单个特定实体。根是聚合中唯一允许外部对象保存对…的引用的成员。。。。
如果愿意,聚合是一个对象图,其中包括根对象,以及通过遍历本地引用可以从根对象访问的其他对象。

相关问题