我已经读过,在大多数情况下,Value Objects不应该引用它们的所有者。
a)我将此解释为关联应该是单向的,只能从所有者到VO遍历?
b)为什么VO不应该引用它们的所有者?
谢谢
答案 0 :(得分:4)
value objects引用其所有者是一种代码气味,因为它表明违反了the SRP以及overly-tight coupling。根据定义,值对象是除了保持值之外几乎没有的对象。因此它是不可变的,没有大多数逻辑(业务逻辑,生命周期逻辑等)。
答案 1 :(得分:3)
a)我将此解释为关联应该是 单向,只能从所有者到VO?
是
b)为什么VO不应该引用它们的所有者?
因为不需要它。值对象是简单对象,VO中的潜在行为通常仅与其自身或其自身类的另一个实例相关。
因为值对象可以包含在多个所有者类型中,可能包含在多个聚合中。
因为价值对象的平等是基于所有相等的字段,并且你不希望John的眼睛的颜色被认为与Laura的眼睛的颜色绿色有任何不同仅仅是因为奇怪的所有者字段。 / p>
因为不鼓励双向关联(即使在实体中)。
答案 2 :(得分:2)
我遵循这个原则,因为我希望我的POJO的设计独立于使用它们的客户端,并在代码级别将其与客户端分离。这样,它们便于携带。