保存实体的值对象

时间:2017-11-09 13:58:28

标签: domain-driven-design entities value-objects

在书中,Eric Evans展示了VALUE OBJECT持有ENTITIES的示例。 VALUE OBJECTS是不可变的,ENTITIES不是。

问题是:如果是ENTITY那个 是从VALUE OBJECT引用改变它的状态,是不可变性被破坏了吗?

在我看来它并没有打破不变性,因为它的“价值” 对象位于ENTITIES数组上,而不是它们的状态。

你们有什么想法?

1 个答案:

答案 0 :(得分:0)

这取决于你是否可以通过VO直接改变实体。

想象一下可以在多个对象之间共享的VO实例。如果VO包含可变实体并将其公开为公共成员,则多个客户端可以同时更新该实体。这会导致您期望在实际不变性中不会发生的问题。

如果VO仅保存引用实体的ID,则必须在更改之前从存储库中获取全新实例,从而避免共享可变状态问题。