值对象中的值对象[DDD]

时间:2012-11-07 13:44:08

标签: domain-driven-design

我在尝试理解如何使用Value Objects和Aggregates方面遇到了一些困难。我将以一个例子来解释我的情况。

我有一个名为Relationship实体。它包含ID和StartDate等值。有两个值对象BoyfriendGirlfriend。男朋友和女朋友对象都有地址,所以我创建了另一个值对象Address。在数据库内部,这些都组合在一个表中(即ID,StartDate,BoyfriendAddress,GirlfirendState等)。

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

1 个答案:

答案 0 :(得分:3)

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

此外,如果男朋友和女朋友没有全球唯一ID,那么他们不是聚合根,如果他们在关系中没有本地唯一身份,那么他们不是实体

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