在阅读完埃文斯和弗农之后,我还有一个基本问题。当然,我知道一个实体(实例)只能聚集在一个集合中。但是,一个实体类能否在多个聚合(类)中使用?为了澄清,我要求在班级级别。其他公式:两个不同的聚合根类(!)聚合相同的实体类?当然,任何实体实例都必须只属于两个聚合根类中的一个实例。对于Value对象类,这似乎是可能的。至少我的印象是,值对象类(例如,用于"money“)可以在不同的聚合类型中使用。
发布于 2015-03-04 13:32:42
正如您正确地指出的,实体实例不应该在聚合之间共享,因为一个聚合不知道通过另一个聚合对实体所做的更改,并且不能强制执行它的不变量。
理论上,实体类可以在两个聚合体之间共享,但是,根据相同的推理,只有当集合中的实体实例集合与另一个实例不相交时,才能共享。这引起了以下问题:
Value对象可以避免这些问题,因为它们通常是不可变的或被视为不可变的--您不修改VO,而是修改它的父实体,以便它指向一个全新的VO实例。另外,由于值对象没有标识,所以说“相同”的VO同时在两个集合中没有多大意义。因此,您可以在不同的聚合类中安全地重用VO类型。
https://stackoverflow.com/questions/28853752
复制相似问题