ger*_*s.b 3 domain-driven-design specifications invariants
我开始使用领域驱动设计,并对ValueObject有疑问:
它们可以包含不变量或其他规范吗?
考虑一个不可变的ValueObject:
ValueObject (
prop integer: Int
prop string: String
// Value and copy constructor
// Observers for integer and string
// Equality methods on integer and string value
)
Run Code Online (Sandbox Code Playgroud)
我可以添加一些不变量,例如integer > 0 & < 42。或者它们必须是没有任何逻辑的简单传输?
我希望他们可以,但需要确认。
值对象 (VO) 封装了值及其业务需求。这就是它的目的:对恰好是一个简单(并不总是单一)值的业务概念(及其约束)进行建模。
VO 不是数据传输对象 (DTO),因为它定义了仅在包含的有界上下文中有效的业务概念,而 DTO 旨在跨越边界。