Architecture DDD Aggregate Root/在这种情况下,我的内部实体是否需要本地标识?
让我们假设:Architecture DDD Aggregate Root/在这种情况下,我的内部实体是否需要本地标识?,architecture,entity,domain-driven-design,aggregate,Architecture,Entity,Domain Driven Design,Aggregate,让我们假设: 一个用户实体作为聚合根。(包含登录名、密码) 一个UserProfile实体,作为User的内部部分。(包含姓、名等) 这种分离的一个原因是保持SRP(关注点分离): User=>处理身份验证数据,UserProfile=>处理用户的联系信息等 我没有选择将UserProfile作为链接的、不同的聚合根,因为从逻辑上讲,没有链接的User的UserProfile完全没有意义。因此,我们讨论UML意义上的组合 规则规定,任何客户端都不应直接访问聚合根的内部实体。 因此,任何客户都
- 一个
实体作为聚合根。(包含登录名、密码)用户
- 一个
实体,作为UserProfile
的内部部分。(包含姓、名等)User
User
=>处理身份验证数据,UserProfile
=>处理用户的联系信息等
我没有选择将UserProfile
作为链接的、不同的聚合根,因为从逻辑上讲,没有链接的User
的UserProfile
完全没有意义。因此,我们讨论UML意义上的组合
规则规定,任何客户端都不应直接访问聚合根的内部实体。
因此,任何客户都不需要知道UserProfile
身份才能完成任务。重要的是用户。
如果有人想更新相关的用户配置文件
,则应在用户
中提供一种方法来实现此目的
当然,我的用户实体需要一个UUID(根据Vaughn Vernon的书中的建议生成)。
因此,我使用一个专用库(Apache,因为我使用JVM)生成了一个
我的问题集中在相关的UserProfile
identity上。
因为期望它在外面可以到达是没有意义的;正如Evans建议的那样,我们应该设置一个“简单”的本地标识,该标识只在相关集合中唯一
乍一看,1-N关系很有趣:
一个用户
包含多个用户配置文件
。根据用例,这些本地标识将允许检索正确的用户配置文件
但在1-1关系(一个用户
只有一个用户档案
)的情况下,我甚至怀疑“身份”的必要性,不管是什么
我应该如何处理这种情况 正如您所说,如果每个用户只有一个用户配置文件
,那么它就不需要有明确的本地身份。例如,在每个用户有多个UserProfile
值对象的场景中,如果您想更新特定的配置文件,您需要一种方法来引用它们