值对象中的值对象 [DDD]

Ada*_*Dev 4 domain-driven-design

我在尝试理解如何使用值对象和聚合时遇到了一些困难。我将用一个例子来解释我的情况。

我有一个实体,称为Relationship。它保存诸如 ID 和 StartDate 之类的值。有两个值对象BoyfriendGirlfriend。男朋友和女朋友对象都有地址,所以我创建了另一个值对象Address。在数据库中,这些都组合在一张表中(即 ID、StartDate、BoyfriendAddress、GirfirendState 等)。

我如何创建男朋友和女朋友?根据我对定义的理解,它们不符合聚合的条件,因为它们没有根实体。一个值对象里面可以有另一个值对象吗?

Aug*_*sto 6

是的,您可以在其他值对象中拥有值对象。我认为最简单的例子是 Money 类,它包含一个金额和一个货币,它是另一个 VO。

此外,如果 Boyfriend 和 Girlfriend 没有全局唯一 ID,则它们不是聚合根,如果它们在关系中没有本地唯一标识,则它们也不是实体

老实说,您的所有应用程序中的第一个在政治上不正确:) - 因为存在GLBT关系。第二,一个人(我假设你有他们的名字)不是一个实体或聚合根,这感觉很奇怪。