在DDD中,值对象的实际优势是什么?

发布于 2024-07-14 21:06:41 字数 98 浏览 7 评论 0原文

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

I have gotten so far that I understand entity objects have an ID while value object have not, but in the most common example you have the person entity that have a address value object attached to it. What is the big advantage of creating a separate address object instead of just keeping the address properties within the Person Entity?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

幽梦紫曦~ 2024-07-21 21:06:41

除了已经提到的内容之外,Greg Young 非常重视这样一个事实:由于它们是不可变的,因此您可以在创建时验证它们,而不必再担心验证问题。 如果状态无法更改,那么您就知道它始终有效。

In addition to the things already mentioned, Greg Young makes a big deal out of the fact that since they are immutable, you can validate them on creation and never worry about validation again. If the state cannot be changed, then you know it's always valid.

携君以终年 2024-07-21 21:06:41
  • 值对象可以用作其他类中其他方法的参数
  • 它可以使您的设计更清晰
  • 它可能有助于性能优化(例如:fly-weight模式)
  • 值对象可以在不同的实体中重用。 (例如:具有地址值对象的用户和位置实体。

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

  • Value objects can be used as arguments for other methods in other classes
  • It can make your design clearer
  • It might help with performance optimization (example: fly-weight pattern)
  • Value objects can be reused in different entities. (example: user and location entities with address value objects.

Don't forget that "not having an id" is not the only difference between value objects and entities, being immutable is also very important.

柒七 2024-07-21 21:06:41

将其视为可重复使用的组件。 您可以将其设置为家庭地址、工作地址,无需太多额外的努力。 您可以使用它来将其他系统与人员实体解耦。 假设您介绍一个商业实体。 它还会有一个地址。

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

Think of it as a reusable component. You can make it into a home address, work address without much extra effort. You can use it to decouple other systems from the person entity. Say you introduce a business entity. It will also have an adress.

Related to this subject is another important subject: composition vs. inheritance

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文