领域驱动设计;ValueObject 可以包含不变量或规范吗?

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。或者它们必须是没有任何逻辑的简单传输?

我希望他们可以,但需要确认。

Mik*_*eSW 5

值对象 (VO) 封装了值及其业务需求。这就是它的目的:对恰好是一个简单(并不总是单一)值的业务概念(及其约束)进行建模。

VO 不是数据传输对象 (DTO),因为它定义了仅在包含的有界上下文中有效的业务概念,而 DTO 旨在跨越边界。