0

我的销售模块中有Order和类,该类用于一些分类目标并在s 上应用一些业务规则。每个班级都有自己的桌子。OrderTypeOrderTypeOrder

我想DDD在我的项目中应用技术。所以,我认为这Order是一个聚合根,但是呢OrderType?它是否也包含在Order聚合中,还是一个Value 对象?我认为这将是一个价值对象。我对么?

在此处输入图像描述

4

3 回答 3

1

有一个常见问题“实体与值对象”。

怎么样OrderType?它是否也包含在 Order 聚合中,还是一个Value 对象?我认为这将是一个价值对象。我对么?

我会说这OrderType是一个实体,但它取决于您的域。

Value Object和的区别Entity很简单:

  1. 当所有属性都相等时,值对象被认为是相同的。

    当您只关心模型元素的属性和逻辑时,将其归类为值对象。让它表达它所传达的属性的含义,并赋予它相关的功能。将值对象视为不可变的。

  2. 当实体具有相同的身份时,它们被认为是相同的。

    当一个对象通过它的身份而不是它的属性来区分时,把它作为它在模型中的定义的主要内容。保持类定义简单,并专注于生命周期的连续性和身份。

实体有一个简单的“试金石”

如果同一个对象的两个实例具有不同的属性值,但相同的标识值,它们是同一个实体吗?

于 2014-04-20T17:53:35.613 回答
0

你甚至可能不需要一个类来建模OrderType。如果您的编程语言支持,带有属性的枚举可能就足够了,例如

public enum OrderType {
  [Code("ABC123")]
  OneTime = 0,
  [Code("XYZ456")]
  Repeating = 1
}
于 2014-04-19T16:58:40.810 回答
0

一如既往“这取决于……”

根据您的描述,它似乎应该是一个 Value 对象,或者,正如 Eric Evans 的意思,Readonly entity without identity

  1. 应该OrderType是一个单独的实体(可以发送到另一个对象)还是对象的一小部分Order

  2. 即使具有相同的字段( ,) 也应该OrderType具有身份并且是唯一的对象吗?CodeTitle

    是 -> 具有 ID 的实体;否 -> 值对象

于 2014-04-19T14:29:48.453 回答