ONE*_*HRD 2 domain-driven-design specification-pattern
我知道规范模式描述了如何使用实现类的层次结构ISpecification<T>来评估 T 类型的候选对象是否匹配某个规范(= 满足业务规则)。
我的问题:我要实现的业务规则需要评估多个对象(例如,客户和合同)。
我的双重问题:
是否有规范模式的典型改编来实现这一点?我只能考虑删除ISpecification<T>我的规范类的实现,并在isSatisfiedBy()方法中采用尽可能多的参数。但是通过这样做,我失去了将这个规范与其他规范结合起来的能力。
这个问题是否表明我的设计存在缺陷?(即我需要使用 Customer 来评估什么,而应该在另一个对象上评估合同,比如订阅,它可以包含所有必要的信息)?
在那种情况下(取决于规范应该做什么,我将使用其中一个对象作为规范主体,其他对象作为参数。
例子:
public class ShouldCreateEmailAccountSpecification : ISpecification<Customer>
{
public ShouldCreateEmailAccountSpecification(Contract selectedContract)
{
SelectedContract = selectedContract;
}
public Contract SelectedContract { get; private set; }
public bool IsSatisfiedBy(Customer subject)
{
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2241 次 |
| 最近记录: |