architecture - 将值对象放在领域层的什么位置?

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

知道值对象表示域的描述,该描述可以是不同有界上下文中许多实体的一部分。例如 FullName 值对象,这个 VO 可以作为 Customer 实体的成员存在于“图书获取”上下文中,也可以作为 BookAuthor 实体的成员存在于“图书管理”上下文中。知道值对象可以在领域的不同部分使用,值对象应该在哪里实现?他们是否应该有一个特殊的层/模块,每个有界上下文都会在需要时使用?

最佳答案

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

根据经验 应避免跨上下文边界重用代码 .这条规则可能有异常(exception),但使用具有域相关内容的通用库将很快干扰受影响域模型的独立演化。

注:丹·伯格·约翰逊 (Dan Bergh Johnsson) 发表了一篇精彩而有值(value)的演讲,名为 The Power of Value - Power Use of Value Objects in Domain Driven Design 2011 年在 Øredev。

关于architecture - 将值对象放在领域层的什么位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23996378/

相关文章:

c# - Controller和View之间的抽象层

web-applications - 是否有基于规则的访问控制的简单通用实现?

java - 将用户界面逻辑分组为一种 UIService?

domain-driven-design - Repositories 如何适应 CQRS?

java - 将所有事件从 CommandGateway 路由到单个事件处理程序

CQRS - 允许使用事件和其他信息源构建读取模型的依赖项

iphone - iOS 客户端 : "Caching" Server-side data to persistent storage

zend-framework - 在 Zend Framework 应用程序中存储特定于应用程序的非模型类的最佳位置在哪里?

domain-driven-design - 事件溯源 - 如何恢复错过的事件

design-patterns - 在域驱动设计中使用摘要对象