我经常看到这个词不变量在DDD中。Here https://msdn.microsoft.com/en-us/magazine/hh205755.aspx迪诺·埃斯波西托谈到了这一点。如果我查看 .NET 库,我会看到验证属性 https://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.validationattribute(v=vs.110).aspx班级。是不变量 and 验证规则相同?例如,我可以说仅当订单总额超过 250 美元时才可享受 50% 折扣是一个不变量?
或者它们是否有所不同,不变式是为了保护对象免于无效,而验证是为了检查对象的有效性,即使它已经改变了它的状态(它可以处于有效或无效状态)?在上面的示例中,如果我使用不变量,我会在更新折扣之前检查不变量,并且在验证的情况下,我应用 50% 折扣,然后检查有效性(对象已经处于无效状态)。
当然,验证是批准给定对象状态的过程,而不变性强制执行甚至发生在达到该状态之前。
一个推论是,不变的执行最好由正在变异(或创建)的事物本身来执行,就像自我保护反射一样,而验证通常由第三方完成。
The 始终有效 http://codebetter.com/gregyoung/2009/05/22/always-valid/该学派主张使用不变量而不是验证。我认为它与 DDD 和聚合完美契合。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)