将值对象放在域图层中的位置?

时间:2014-06-02 13:59:51

标签: architecture domain-driven-design cqrs value-objects

知道值对象代表域的描述,此描述可以是不同有界上下文中的许多实体的一部分。例如,FullName值对象,此VO可以存在于" book aquisition"作为客户实体成员的上下文,它也可以存在于图书管理中。 context作为BookAuthor实体的成员。知道值对象可以在域的不同部分使用,应该在哪里实现值对象?他们是否应该有一个特殊的层/模块,每个有界的上下文将在需要时使用?

2 个答案:

答案 0 :(得分:5)

每个有界上下文都应该实现自己的值对象(当然还有实体),即使这会导致代码重复。

根据经验,应该避免跨越上下文边界的代码重用。此规则可能有例外,但使用与域相关内容的公共库会很快干扰受影响域模型的独立演变。

注意: Dan Bergh Johnsson在2011年在Øredev发表了一篇名为 The Power of Value - Power Use of Value Objects in Domain Driven Design 的精彩而有价值的演讲。

答案 1 :(得分:0)

域层的值对象应该在聚合中。但在某些情况下,VO是如此提及的一般。 我们将这些通用值对象放在特殊模块中,可用于所有聚合,但我们的项目中有一个有界的上下文。 IMO您可以将每个有界上下文的Value对象放在其中。

相关问题