DDD:实体是否可以具有原始数据类型的属性?

时间:2015-04-28 13:15:58

标签: object attributes entity domain-driven-design

域驱动设计区分两种模型类型:实体和值对象。在大多数示例中,实体的属性是值对象或其他实体,而值对象的属性大多是简单的字符串,整数等(即原始数据类型)。

这引出了一个问题:一个实体是否也可以拥有原始数据类型的属性?或者您通常将实体的每个属性建模为值对象或其他实体吗?

以下可能是回答此问题的示例:我们有一个实体Comment,其属性为texttext只是一个字符串变量还是一个值对象?

1 个答案:

答案 0 :(得分:1)

虽然组成另一个实体或价值对象的实体是共同的态度,但这不是必要的。请记住,你应该考虑一个抽象。当使用它们时没有涉及业务逻辑时,原始类型是可以的。例如:

public class User {
    private UserId id;
    private String nickname;
    private Date joinDate;
}

正如你所看到的,昵称是一种原始类型,因为我们不能用昵称做任何特别的事情。另一方面,joinDate应该是Value Object,因为date有一些逻辑(比较日期,添加,减去等)。

即使在"实施域驱动设计" Vaughn Vernon是由原始类型组成的实体的例子。