到目前为止,我知道实体对象有 ID,而值对象没有,但在最常见的示例中,人员实体附加了地址值对象。创建单独的地址对象而不是仅将地址属性保留在 Person 实体中的最大优点是什么?

有帮助吗?

解决方案

除了已经提到的事情之外, 格雷格·杨 由于它们是不可变的,因此您可以在创建时验证它们,而不必再担心验证,这一事实很重要。如果状态无法更改,那么您就知道它始终有效。

其他提示

  • 值对象可以用作其他类中其他方法的参数
  • 它可以让你的设计更加清晰
  • 它可能有助于性能优化(例如:蝇重模式)
  • 值对象可以在不同的实体中重用。(例子:具有地址值对象的用户和位置实体。

不要忘记“没有 id”并不是值对象和实体之间的唯一区别,不可变也非常重要。

把它看成是一个可重复使用的部件。你可以把它变成一个家庭地址,工作地址没有太多额外的努力。你可以用它来从人实体脱钩的其他系统。假设你介绍一个商业实体。它也将有一个ADRESS。

与此相关的主题是另一个重要的课题:组合物与继承

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top