首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >实体类是否独占于一个聚合

实体类是否独占于一个聚合
EN

Stack Overflow用户
提问于 2015-03-04 11:51:35
回答 2查看 6.7K关注 0票数 14

在阅读完埃文斯和弗农之后,我还有一个基本问题。当然,我知道一个实体(实例)只能聚集在一个集合中。但是,一个实体类能否在多个聚合(类)中使用?为了澄清,我要求在班级级别。其他公式:两个不同的聚合根类(!)聚合相同的实体类?当然,任何实体实例都必须只属于两个聚合根类中的一个实例。对于Value对象类,这似乎是可能的。至少我的印象是,值对象类(例如,用于"money“)可以在不同的聚合类型中使用。

EN

Stack Overflow用户

回答已采纳

发布于 2015-03-04 13:32:42

正如您正确地指出的,实体实例不应该在聚合之间共享,因为一个聚合不知道通过另一个聚合对实体所做的更改,并且不能强制执行它的不变量。

理论上,实体类可以在两个聚合体之间共享,但是,根据相同的推理,只有当集合中的实体实例集合与另一个实例不相交时,才能共享。这引起了以下问题:

  • 你为什么一开始就想要这个?如果同一个类有两大类实例,这难道不表明有两个语义不同的概念,每个概念都应该有自己的类,或者至少是子类?
  • 如何防止一个属于一个聚合的实体实例在运行时(bug)或编程时(未受过教育的开发人员决策)添加到另一个聚合中?

Value对象可以避免这些问题,因为它们通常是不可变的或被视为不可变的--您不修改VO,而是修改它的父实体,以便它指向一个全新的VO实例。另外,由于值对象没有标识,所以说“相同”的VO同时在两个集合中没有多大意义。因此,您可以在不同的聚合类中安全地重用VO类型。

票数 12
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28853752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档