【发布时间】:2015-06-12 16:44:54
【问题描述】:
来自a post 我读到Entity 似乎只是Aggregate 的一个子集。我已经阅读了Domain-Driven Design 和Implementing Domain-Driven Design 中的两种模式,我试图了解它们之间的UML 区别。
让我们考虑一个简单的类。它是一封信,其中包含一条消息、一个接收者,也可能是发送者。
我猜这个 Letter 类会被认为是一个实体?
现在假设我们想扩展我们的包裹业务以能够发送包裹,那么它可能如下所示。
由于如果整个包裹丢失,包裹中的所有项目都将丢失,因此我们使用 UML Composition relation(一个填充菱形)。我们还希望通过禁止从包外部更改或删除项目来保持包的一致性。 description of Aggregate 读取
聚合根保证所做更改的一致性 通过禁止外部对象持有在聚合内 对其成员的引用。
因此,我们确保在聚合中隐藏组合关系,并保留不变量。
我的问题是:
我们可以说Entity和Aggregate之间的UML区别在于Entity确实不包含任何组合关系而Aggregate包含至少一个组合关系?
【问题讨论】:
-
"entity" 是一个 UML 关键字,其含义与一般 IT 上下文中的含义几乎相同。它是应用于组件的预定义标准构造型。 UML 文档中的语义以“标准原型:L2(业务概念)”的形式给出。 (L2 仅表示合规级别 2;UML 系统配置文件有 3 个合规级别。)
-
页。 s。除非您希望可以发送空包裹,否则您的 Item 多重性值应为 1..*。此外,您的发件人应该只是 1,因为您没有零到任何数量的发件人。
-
@BobRodes 好点。我从包中需要什么信息的角度添加关系,而不是从执行方式的角度。
-
@BobRodes 的 0..* 多重性是正确的,因为最初绘制的是正确的。包可以存在于内存或场景中,没有项目。包裹不能在没有物品的情况下发货是一项业务规则。
-
好吧,如果您了解问题域中的业务规则的话。我自己不会那样设置业务规则。我的规则是系统中不能存在没有物品的包。