2012-04-03 172 views
3

我设计了一个遵循DDD方法论的领域模型。我想添加验证。域模型验证?

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

感谢

回答

8

如果验证规则形成业务域的一部分,他们属于在模型。

聚合根负责维护它所包含的不变量,因此验证它们属于它的责任范围。

如果您发现验证规则非常复杂,您可以创建验证服务,该验证服务将由聚合根用于此功能。

+1

感谢您的快速回答。正如你所说,业务规则应该在域级进行检查,并且通常由集合根来检查。那些微不足道的验证规则呢?例如,Customer实体的名称不能为空。在哪里检查? – 2012-04-03 12:41:57

+1

@MickaelMarrache - 这是你的有限背景下的商业规则吗?是?然后它属于该域。像这样的东西应该直接由'客户'实体来强制执行。 – Oded 2012-04-03 12:43:27

+1

我同意你的看法。验证业务域规则属于业务域层。直接在GUI中(出于性能原因)或持久层,可以在GUI中验证来自GUI的用户输入。 – Roland 2012-04-11 13:37:08

2

这取决于您拥有的验证种类。

如果只是需要一个客户名称,并且字段的最大长度,那么它不是域本身的责任。这应该是输入验证。

如果你正在创建一个网上商店,并且当不是所有的商品都有库存时该订单是无效的,那么你有一些真正的域验证。

Domain Driven Design 101具有起始于滑动44.