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