在书中,Eric Evans展示了VALUE OBJECT持有ENTITIES的示例。 VALUE OBJECTS是不可变的,ENTITIES不是。
问题是:如果是ENTITY那个 是从VALUE OBJECT引用改变它的状态,是不可变性被破坏了吗?
在我看来它并没有打破不变性,因为它的“价值” 对象位于ENTITIES数组上,而不是它们的状态。
你们有什么想法?
答案 0 :(得分:0)
这取决于你是否可以通过VO直接改变实体。
想象一下可以在多个对象之间共享的VO实例。如果VO包含可变实体并将其公开为公共成员,则多个客户端可以同时更新该实体。这会导致您期望在实际不变性中不会发生的问题。
如果VO仅保存引用实体的ID,则必须在更改之前从存储库中获取全新实例,从而避免共享可变状态问题。