Domain driven design 在DDD中,价值对象的实际优势是什么?
到目前为止,我了解到实体对象有一个ID,而值对象没有,但在最常见的示例中,您有一个person实体,它附带了一个address-value对象。创建一个单独的address对象而不仅仅是将address属性保存在Person实体中的最大优势是什么?将其视为一个可重用的组件。你可以把它变成家庭住址,工作住址,而无需付出太多额外的努力。您可以使用它将其他系统与person实体分离。假设你介绍了一个商业实体。它还将有一个地址 与这个主题相关的是另一个重要主题:构图与继承Domain driven design 在DDD中,价值对象的实际优势是什么?,domain-driven-design,entities,value-objects,Domain Driven Design,Entities,Value Objects,到目前为止,我了解到实体对象有一个ID,而值对象没有,但在最常见的示例中,您有一个person实体,它附带了一个address-value对象。创建一个单独的address对象而不仅仅是将address属性保存在Person实体中的最大优势是什么?将其视为一个可重用的组件。你可以把它变成家庭住址,工作住址,而无需付出太多额外的努力。您可以使用它将其他系统与person实体分离。假设你介绍了一个商业实体。它还将有一个地址 与这个主题相关的是另一个重要主题:构图与继承 值对象可以用作其他类中其他方法
别忘了“没有身份证”不可变不是值对象和实体之间的唯一区别,不可变也是非常重要的。除了前面提到的事情之外,由于它们是不可变的,您可以在创建时验证它们,而不再担心验证。如果状态无法更改,那么您知道这是很重要的这是有道理的。终于找到了不变性有价值的一个很好的理由。“它可以防止奇怪的行为”这个借口以前并没有说服我。罗杰·阿尔辛的回答在这里点燃了我头脑中有史以来最大的灯泡。