我按照DDD方法设计了一个域模型。我想补充验证。
您认为在域模型级别添加验证是个好主意吗?如果不是,我应该在哪里验证我的域对象?
由于
答案 0 :(得分:8)
如果验证规则构成业务域的一部分,则它们属于 in 模型。
聚合根负责维护它所包含的不变量,因此验证它们属于其责任范围。
如果您发现验证规则非常复杂,您可以创建一个验证服务,该服务将由聚合根用于此功能。
答案 1 :(得分:2)
这取决于您拥有的验证类型。
如果只需要一个客户名称并且字段的最大长度,那么这不是域本身的责任。这应该是输入验证。
如果您正在创建网上商店,并且当并非所有商品都有库存时订单无效,那么您有一些真正的域验证。
从幻灯片44开始,Domain Driven Design 101有一些很好的例子。
答案 2 :(得分:1)
Seealso:http://lostechies.com/jimmybogard/2009/02/15/validation-in-a-ddd-world。
"不是回答问题,“此对象是否有效”,请尝试回答“是否可以执行此操作?”的问题。"