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

Tud*_*dor 3 architecture domain-driven-design value-objects cqrs

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

Den*_*aub 5

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

作为经验法则,应避免跨上下文边界重用代码.此规则可能有例外,但使用具有域相关内容的公共库将很快干扰受影响域模型的独立演变.

注: Dan Bergh Johnsson 在2011年的Øredev上发表了一篇名为"价值的力量 - 领域驱动设计中价值对象的强大使用"的伟大而有价值的演讲.