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