我有一个场景,我正在处理MailItems队列。一旦我处理了每个MailItem,我需要更新MailItem的状态。更新状态的逻辑非常复杂。我的想法是,我不应该将逻辑本身封装在MailItem类中,而是将其封装在单独的类中,以便将来进行维护。我应该如何实现复杂的业务逻辑?
因此,我的问题是做这件事的最好方法是什么?
我考虑了规范模式。我对这个模式的研究是它的铰链定义为ISpecification界面如下:
public interface ISpecification<T>
{
bool IsSatisfiedBy(T candidate);
}
我的问题是,我在这种特殊情况下的逻辑不仅是由候选对象的内部状态的影响,也受到一个外部价值,我需要通过考虑的逻辑。
所以,在我的MailItem方法签名必须是这个样子:
public void ChangeStatus(bool mailSentSuccessfully)
标准ISpecification接口并不满足通过在外部值。我是否简单地“弯曲”标准实现,或者这是否打破了模式定义的“规则”?如果这不是答案,我可以看看其他基于模式的选项?