2012-02-29 60 views
9

值对象应该在DDD方法中持有对实体的引用吗?值对象应该保持对实体的引用吗?

编辑

@Dmitry:

这可能是我的情况。在这里,我附上了类图,其中Account持有对IInvoiceable项目集合的引用。我以Tenant作为实体,但它只拥有1个帐户,我不认为Account需要身份。其部分Tenant。或者我应该把它当作实体吗?对我来说这没有意义。

enter image description here

回答

15

是的,可以。这将是一个相对隐晦的案例,但DDD允许它,它可以是有用的。从DDD book by Eric Evans

VALUE OBJECTS甚至可以引用ENTITIES。例如,如果我要求在线地图服务提供从旧金山到洛杉矶的风景优美的驾车路线,则可能会派生出一个路线对象,通过太平洋海岸公路将洛杉矶和旧金山连接起来。即使它引用的三个对象(两个城市和一条高速公路)都是实体,那么该Route对象将是VALUE。

page #98

+0

谢谢,我编辑了我的帖子,也许这将揭示我犯了一个错误 – Ivan 2012-02-29 19:22:19

+0

可能是这种情况,你需要合并租户和帐户到一个实体 - TenanatAccount。或者你可能有Tenant是Aggregate root和Account是Aggregate根内的实体。或者您的账户可能仍然是Value对象 - 并持有对其他实体的引用。它很难给你一个建议,因为我们对你的域名不够了解。这些方法都没有违反DDD,所以选择一个让你现在感觉最好的方法,稍后再改变它,因为你对领域的理解不断发展。 – Dmitry 2012-02-29 19:31:21

+0

非常感谢。我可能将他们合并在一起,因为单独的租户看起来太贫乏了。 – Ivan 2012-02-29 19:33:05

相关问题