DDD-Aggregate Root /在这种情况下,我的内部实体是否需要本地身份?

时间:2013-07-09 18:24:14

标签: architecture entity domain-driven-design aggregate

我们假设:

  • {strong}聚合根的User实体。 (包含登录密码
  • UserProfile实体作为User的内部部分。 (包含 lastName firstName 等。)

这种分离的一个原因是保持SRP(关注点分离):
User =>处理身份验证数据,UserProfile =>处理用户的联系信息等。

我没有选择将UserProfile设为链接且不同的聚合根,因为从逻辑上讲,没有链接UserProfile的{​​{1}}完全没有意义。因此,我们在UML意义上讨论User

规则说任何客户端都不应直接访问聚合根的内部实体。 因此,任何客户都不需要知道composition身份来完成他们的任务。重要的是UserProfile一个。 如果有人想要更新关联的User,则UserProfile中的方法应该存在。

当然,我的用户实体需要一个UUID(根据 IDDD Vaughn Vernon的书建议生成一个)。 所以我使用专用库(Apache,因为我使用JVM)生成了一个。

我的问题主要集中在相关的User身份上。 因为期望它可以在外面到达是没有意义的;如推荐 Evans ,我们应该设置一个“简单”的本地身份,仅在相关聚合中唯一。

乍一看,1-N关系会很有趣: 一个UserProfile包含MULTIPLE User。根据用例,这些本地身份将允许检索权利UserProfile(s)。

但是如果 1-1关系(一个UserProfile只有一个User),我甚至怀疑“身份”的必要性,不管有什么是。

我该如何处理这种情况?

1 个答案:

答案 0 :(得分:1)

就像你说的那样,如果每个UserProfile只有一个User,那么它就没有必要具有明确的本地身份。在每UserProfileUser个值对象的方案中,如果要更新它们,则需要一种方法来引用特定的配置文件,例如。