到目前为止,我已经理解了实体对象具有ID,而值对象没有,但在最常见的示例中,您具有附加了地址值对象的person实体.创建单独的地址对象而不仅仅是在Person Entity中保留地址属性有什么大的优势?
除了已经提到过的东西之外,Greg Young还说明了这样一个事实,即由于它们是不可变的,你可以在创建时验证它们,而不必再担心验证.如果状态无法更改,那么您知道它始终有效.
值对象可以用作其他类中其他方法的参数
它可以使您的设计更清晰
它可能有助于性能优化(例如:飞重模式)
值对象可以在不同的实体中重用.(例如:具有地址值对象的用户和位置实体.
不要忘记"没有id"并不是值对象和实体之间的唯一区别,不可变也是非常重要的.