2015-04-28 68 views
1

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

这使我想到了一个问题:一个实体是否也具有原始数据类型的属性?或者,您是否通常将实体的每个属性建模为值对象或另一个实体?

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

回答

1

虽然构成其他实体或价值对象的实体是普遍的态度,但并非必要。请记住,你应该考虑抽象。如果没有涉及使用它们的业务逻辑,原始类型也可以。例如:

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

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

即使在Vaughn的“实现领域驱动设计”中,Vernon也是由原始类型。

相关问题