我在尝试理解如何使用Value Objects和Aggregates方面遇到了一些困难。我将以一个例子来解释我的情况。
我有一个名为Relationship
的实体。它包含ID和StartDate等值。有两个值对象:Boyfriend
和Girlfriend
。男朋友和女朋友对象都有地址,所以我创建了另一个值对象Address
。在数据库内部,这些都组合在一个表中(即ID,StartDate,BoyfriendAddress,GirlfirendState等)。
如何创建男朋友和女朋友?根据我对定义的理解,它们不符合聚合条件,因为它们没有根实体。值对象可以在其中包含另一个值对象吗?
答案 0 :(得分:3)
是的,您可以在其他值对象中包含值对象。我认为最简单的例子就是Money类,它包含一个金额和一个货币,这是另一个VO。
此外,如果男朋友和女朋友没有全球唯一ID,那么他们不是聚合根,如果他们在关系中没有本地唯一身份,那么他们不是实体。
我会说实话,首先你的应用程序在政治上是不正确的:) - 因为有GLBT关系。第二,一个人(我假设你有他们的名字)不是一个实体或聚合根,这感觉很奇怪。