我的销售模块中有Order
和类,该类用于一些分类目标并在s 上应用一些业务规则。每个班级都有自己的桌子。OrderType
OrderType
Order
我想DDD
在我的项目中应用技术。所以,我认为这Order
是一个聚合根,但是呢OrderType
?它是否也包含在Order
聚合中,还是一个Value 对象?我认为这将是一个价值对象。我对么?
我的销售模块中有Order
和类,该类用于一些分类目标并在s 上应用一些业务规则。每个班级都有自己的桌子。OrderType
OrderType
Order
我想DDD
在我的项目中应用技术。所以,我认为这Order
是一个聚合根,但是呢OrderType
?它是否也包含在Order
聚合中,还是一个Value 对象?我认为这将是一个价值对象。我对么?
有一个常见问题“实体与值对象”。
怎么样
OrderType
?它是否也包含在 Order 聚合中,还是一个Value 对象?我认为这将是一个价值对象。我对么?
我会说这OrderType
是一个实体,但它取决于您的域。
Value Object
和的区别Entity
很简单:
当所有属性都相等时,值对象被认为是相同的。
当您只关心模型元素的属性和逻辑时,将其归类为值对象。让它表达它所传达的属性的含义,并赋予它相关的功能。将值对象视为不可变的。
当实体具有相同的身份时,它们被认为是相同的。
当一个对象通过它的身份而不是它的属性来区分时,把它作为它在模型中的定义的主要内容。保持类定义简单,并专注于生命周期的连续性和身份。
实体有一个简单的“试金石”:
如果同一个对象的两个实例具有不同的属性值,但相同的标识值,它们是同一个实体吗?
你甚至可能不需要一个类来建模OrderType
。如果您的编程语言支持,带有属性的枚举可能就足够了,例如
public enum OrderType {
[Code("ABC123")]
OneTime = 0,
[Code("XYZ456")]
Repeating = 1
}
一如既往“这取决于……”
根据您的描述,它似乎应该是一个 Value 对象,或者,正如 Eric Evans 的意思,Readonly entity without identity。
应该OrderType
是一个单独的实体(可以发送到另一个对象)还是对象的一小部分Order
?
即使具有相同的字段( ,) 也应该OrderType
具有身份并且是唯一的对象吗?Code
Title
是 -> 具有 ID 的实体;否 -> 值对象