我经常在DDD中看到术语不变量Here Dino Esposito谈论它。如果查看.NET库,则会看到ValidationAttribute类。 不变量验证规则是否相同?例如,我能说仅当订单总额超过$ 250时,才能获得50%的折扣吗?

还是在不变量保护对象免受无效化和验证即检查对象的有效性(即使对象更改了状态(可以处于有效或无效状态))方面有所不同?在上面的示例中,如果使用不变式,则在更新折扣之前检查不变式,在进行验证的情况下,我应用50%折扣,然后检查有效性(对象已经处于无效状态)。

最佳答案

绝对地,验证是批准给定对象状态的过程,而不变的强制执行甚至要在达到该状态之前进行。

必然的结果是,不变的执行最好由被突变(或创造)的事物本身来执行,例如自我保护反射,而验证通常由第三方完成。

Always valid思想流派主张在验证中使用不变量。我认为它与DDD和聚合非常吻合。

关于validation - 不变式和验证规则有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30190302/

10-13 06:09