我在阅读域驱动设计和一些软件工程文章时已多次阅读聚合这个词,但仍然不知道如何使用它或正确理解它。有时候我会在模型(类)上调用它,有时我会错过面向对象的聚合关系。有一个很好的解释吗?
答案 0 :(得分:2)
两者都不同。 在域驱动设计中, Bounded Context 包含一个或多个聚合。将有界上下文拆分为多个聚合来自功能需求。
聚合包含类的集合(请参阅注释),它们在功能上彼此相关。换句话说,聚合中的类共享相同的事务(应该一起保存在数据库中)。
示例:订单类,订单商品类,订单类型 Enum-Class,地址类。
以上四项可以形成聚合。在这种情况下,订单类充当聚合根,它必须是公共的并且公开给其他层。每个聚合只有一个聚合根。
聚合之间的交互仅通过聚合根链接。
进一步阅读:https://domainlanguage.com/ddd/
注意: 类 - 聚合可能包含3类组件。他们可能是也可能不是班级类型。
- 实体 - 所有实体都是类
- 值对象 - 它可以是ValueType(它可以是C#中的结构)
- 枚举类 - 简单的枚举在域驱动设计中很糟糕,因此首选Enum类。
醇>