如何适应规范模式来评估对象的组合?

ONE*_*HRD 2 domain-driven-design specification-pattern

我知道规范模式描述了如何使用实现类的层次结构ISpecification<T>来评估 T 类型的候选对象是否匹配某个规范(= 满足业务规则)。

我的问题:我要实现的业务规则需要评估多个对象(例如,客户和合同)。

我的双重问题:

  • 是否有规范模式的典型改编来实现这一点?我只能考虑删除ISpecification<T>我的规范类的实现,并在isSatisfiedBy()方法中采用尽可能多的参数。但是通过这样做,我失去了将这个规范与其他规范结合起来的能力。

  • 这个问题是否表明我的设计存在缺陷?(即我需要使用 Customer 来评估什么,而应该在另一个对象上评估合同,比如订阅,它可以包含所有必要的信息)?

Pac*_*aco 5

在那种情况下(取决于规范应该做什么,我将使用其中一个对象作为规范主体,其他对象作为参数。

例子:

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)