5

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

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

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

4

1 回答 1

6

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

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

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

于 2012-11-07T15:09:32.957 回答