![]() |
1
8
为了区分地址是值对象还是实体,问自己一个问题——如果一个人的地址改变了,而第二个人的地址相同——两个人都会改变吗?如果它们都改变了-地址将被提升为实体(因为地址标识很重要而不是值)。
不,没有。技术问题不应该影响你的领域。实体可以作为“子集合”,地址可以包含市政当局、城市等,但仍然只是一个实体(因为没有人是没有意义的)。
演示不应该与你的领域太乱。据我所知-如果只显示实体列表并隐藏它们所属的聚合,这是非常好的。 问题是-你想如何模拟移动过程?
记住,没有“模型”,只有“模型”。你不能模拟现实来完美地模仿它,你只能模拟它的一部分来模仿它 解决具体问题
这就是为什么很难回答ddd相关的问题。
这是相关的。如果地址离不开人(这里不是这样),它就不可避免地被降级为实体(因为没有人它就没有意义)或价值对象(如果地址本身没有身份)。否则,只会引入不必要的聚合根。
|
![]() |
2
1
在我看来,如果
你的场景似乎不满足这两个。所以我的意见是否定的 同时阅读这篇文章并提供答案: DDD: Aggregate Roots |
![]() |
3
-1
你谈论地址的方式告诉我它是一个独立的实体,由你提到的组成部分组成。 即使地址与某个人或另一个类没有关联,它仍然存在,这一事实也表明它应该是自己的实体。
仅仅是把地址作为一个特定的概念来讨论这个事实就足以使它成为一个单独的类。即使在地址只存在于另一个类的情况下,创建一个单独的类(在这种情况下可能是嵌套类)也是有意义的,只要将处理地址的逻辑与处理其他人属性的逻辑分开。 更新 http://msdn.microsoft.com/en-us/magazine/dd419654.aspx -关于聚合的部分,则一个地址是否可以没有人(或其他收件人)而存在是不相关的;问题是地址成分是否可以存在,或者在没有地址的情况下是否可以被访问。如果可以,地址不应该是聚合根。 一方面,地址应该是其组成部分的集合。但是,地址的组成部分似乎独立于地址,没有地址也可以存在。毕竟,一个市镇或一条街道可以在没有“门”的情况下存在。所以,我想说,这取消了地址作为DDD术语的聚合根的资格。 更新 我认为,从一个列表中选择一个市政当局来构建一个地址并不是“直接操纵”,因为它总是在构建地址的上下文中进行的。同样地,我也不会考虑保留一份市政当局“直接操纵”名单,如果它只供一个地址使用的话。 正如阿尼斯所指出的,地址是否可以独立于人(或另一个实体)而存在,这与地址本身是否是一个实体有关。我现在的理解是,只有实体才能是聚合根。 |
![]() |
In0cybe · 仅具有多行的组的和值 7 年前 |
![]() |
Rnovice · 根据[重复]列中的唯一值在R中聚合 7 年前 |
![]() |
Sung min Yang · 如何创建均值+标准差数据。框架 7 年前 |
![]() |
ajax2000 · 基于R中现有列中的组创建新列 7 年前 |
![]() |
Spencer Trinh · 如何根据标签匹配来组织和移动数据行? 7 年前 |