为什么Value Objects不应该引用它们的所有者?

时间:2013-01-28 18:42:13

标签: domain-driven-design

我已经读过,在大多数情况下,Value Objects不应该引用它们的所有者。

a)我将此解释为关联应该是单向的,只能从所有者到VO遍历?

b)为什么VO不应该引用它们的所有者?

谢谢

3 个答案:

答案 0 :(得分:4)

value objects引用其所有者是一种代码气味,因为它表明违反了the SRP以及overly-tight coupling。根据定义,值对象是除了保持值之外几乎没有的对象。因此它是不可变的,没有大多数逻辑(业务逻辑,生命周期逻辑等)。

答案 1 :(得分:3)

  

a)我将此解释为关联应该是   单向,只能从所有者到VO?

  

b)为什么VO不应该引用它们的所有者?

  • 因为不需要它。值对象是简单对象,VO中的潜在行为通常仅与其自身或其自身类的另一个实例相关。

  • 因为值对象可以包含在多个所有者类型中,可能包含在多个聚合中。

  • 因为价值对象的平等是基于所有相等的字段,并且你不希望John的眼睛的颜色被认为与Laura的眼睛的颜色绿色有任何不同仅仅是因为奇怪的所有者字段。 / p>

  • 因为不鼓励双向关联(即使在实体中)。

答案 2 :(得分:2)

我遵循这个原则,因为我希望我的POJO的设计独立于使用它们的客户端,并在代码级别将其与客户端分离。这样,它们便于携带。