2

让我们假设:

  • 作为聚合根User实体。(包含登录名密码
  • 一个UserProfile实体作为 的内部部分User。(包含lastNamefirstName等..)

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

我没有选择创建UserProfile一个链接且不同的聚合根,因为从逻辑上讲,UserProfile没有链接的 aUser严格来说是没有意义的。因此,我们谈论的composition是 UML 意义上的 a。

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

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

我的问题集中在相关的UserProfile身份上。因为期望它在外面可以到达是没有意义的;正如埃文斯建议的那样,我们应该设置一个“简单”的本地标识,仅在相关聚合中唯一。

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

但是在1-1 关系的情况下(一个User只有一个UserProfile),我什至怀疑“身份”的必要性,无论会有什么。

我应该如何处理这种情况?

4

1 回答 1

1

就像你说的,如果只有一个UserProfileperUser那么就不需要它有一个明确的本地身份。例如,在具有多个UserProfile值对象的场景中,User如果您想更新它们,您需要一种方法来引用特定的配置文件。

于 2013-07-09T18:46:32.177 回答