我知道规范模式描述了如何使用实现ISpecification<T>
的类的层次结构来评估类型T的候选对象是否符合特定规范(=满足业务规则)。如何调整规范模式以评估对象的组合?
我的问题:我想实施的业务规则需要评估几个对象(例如,客户和合同)。
我的双重问题:
是否有在规范模式的典型调整来实现这一目标?我只能想到通过我的规范类去除
ISpecification<T>
的实现,并且在isSatisfiedBy()
方法中采用了我想要的参数。但是通过这样做,我失去了将此规范与其他人结合起来的能力。这个问题揭示了我设计中的缺陷吗? (即,我需要使用客户和合同进行评估的方式应该在另一个对象上进行评估,如订阅,其中可能包含所有必要的信息)?
你能告诉我们你到底想干什么?我不能给出一个很好的答案,只是“评估几个对象” – Paco 2010-02-24 16:52:50
具体而言,我想创建一个规则,告诉我是否需要为我的客户创建一个电子邮件帐户。这条规则需要知道关于我的客户的东西,以及关于他选择的合同的东西。为了达到这个目的,我想创建一个规范类,它公开一个布尔isSatisfiedBy()方法,它将指示我的规则是否被作为参数传递的候选对象验证。 – ONETHRD 2010-02-24 18:07:28
我的回答不清楚,忽略了您的问题的几个方面,并提出了一些无根据的假设(例如,您可以从合同导航到客户)。所以我删除了它。我认为你在第二个问题上碰到了问题:规范应该运行在一个可以访问客户和合同的对象上。 – 2010-02-24 19:13:36