我应该如何实现复杂的业务逻辑?

时间:2011-08-23 10:43:04

标签: design-patterns

我有一个我正在处理MailItems队列的场景。处理完每个MailItem后,我需要更新MailItem的状态。更新状态的逻辑非常复杂。我的想法是,我不应该将逻辑本身封装在MailItem类中,而是将其封装在一个单独的类中,以便将来易于维护。

因此,我的问题是,最好的方法是什么?

我考虑了规范模式。我对这种模式的研究是它取决于如下定义的ISpecification接口:

public interface ISpecification<T>
{
   bool IsSatisfiedBy(T candidate);
}

我的问题是,在这种特殊情况下,我的逻辑不仅受候选对象的内部状态的影响,而且还受到我需要传递给逻辑中考虑的外部值的影响。

因此,我在MailItem上的方法签名需要看起来像这样:

public void ChangeStatus(bool mailSentSuccessfully)

标准的ISpecification接口不适合传入外部值。我只是简单地“弯曲”标准实现,还是这样做会破坏模式定义的“规则”?如果这不是答案,我可以研究哪些其他基于模式的选项?

1 个答案:

答案 0 :(得分:1)

您可以使用规范模式,因为它只是使用包含其他对象的候选类型,即通过扩展ISpecification<Pair<MainType,ExternalType>>来构建对的验证。

如果您没有使用已提供PairTuple类型的语言,那么您当然也必须创建该语言以使用此策略。

如果这对您不起作用,那么在模式上构建自己的变体肯定是可以的。它们确实不是设计规则,而是路标。