一起聊一下DDD里显式的约束的理解
DDD第166页,关于显式的约束有这样的话:
下面是一些警告信号,表明约束正在误导它所属的对象设计
×从对象的定义发现,判断约束所需的数据本来不应该属于这个对象;
×相关规则在多个对象中出现,造成代码的重复,或者使对象之间出现了本来不应出现的继承关系;
×有许多设计和需求讨论都是围绕约束展开的,但是这些规则在实现上却被隐藏到了过程性的代码中。
如果约束使对象的基本职责变得模糊,或者约束在领域中非常显眼而在模型中却若隐若现,那么您就可以将它分解出来,使之成为一个显式的对象,甚至将它建模为一系列对象的关系。
业务规则往往不适于放在任何一个实体或值对象中,而且规则的变化和组合会掩盖那些领域对象的基本含义。但是,将这些规则移出领域层会更加糟糕,因为领域代码不再能够表达模型了。
逻辑程序设计为我们提供了一种概念,即利用“谓”词来分离和组合规则对象。不过,要把这种概念完全用对象实现出来还是比较困难。而且这种概念也过于通用,在交流意图的时候它还不如一个更有针对性的设计。
思考:
如果想做一个行业的产品,考虑到很多未知的规则和可配置的规则,我是否要对所有的规则约束都创建一个类呢?
大家可以谈谈对这点的理解吗?
[该贴被windflaw于2007年04月23日 21:10修改过]
[该贴被windflaw于2007年04月23日 21:14修改过]