域模型中的验证?

时间:2012-04-03 12:31:13

标签: validation domain-driven-design

我按照DDD方法设计了一个域模型。我想补充验证。

您认为在域模型级别添加验证是个好主意吗?如果不是,我应该在哪里验证我的域对象?

由于

3 个答案:

答案 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

"不是回答问题,“此对象是否有效”,请尝试回答“是否可以执行此操作?”的问题。"