【问题标题】:DDD: Can an entity have attributes of primitive data types?DDD:实体可以具有原始数据类型的属性吗?
【发布时间】:2015-04-28 13:15:58
【问题描述】:

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

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

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

【问题讨论】:

    标签: object attributes entity domain-driven-design


    【解决方案1】:

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

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

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

    即使在 Vaughn Vernon 的“实现领域驱动设计”中也有由原始类型组成的实体示例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-02
      • 2017-07-08
      • 2019-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多