我理解,实体对象具有ID而值对象没有,但在最常见的例子中,你会发现人员实体与地址值对象相关联。相对于将地址属性保留在人员实体中,创建单独的地址对象有何优势呢?
我理解,实体对象具有ID而值对象没有,但在最常见的例子中,你会发现人员实体与地址值对象相关联。相对于将地址属性保留在人员实体中,创建单独的地址对象有何优势呢?
除了已经提到的内容外,Greg Young 强调不可变对象的重要性在于可以在创建时验证并永远不用担心验证问题。如果状态不可更改,那么你就知道它始终是有效的。
不要忘记,“没有id”不是值对象和实体之间唯一的区别,不可变性也非常重要。
把它看作是一个可重复使用的组件。你可以很容易地将其制作成家庭地址、工作地址等。你可以使用它来解耦其他系统与个人实体之间的关系。比如,你引入了一个企业实体。它也会有一个地址。
与此主题相关的另一个重要主题是:组合 vs. 继承。