使用什么模式?:下一个处理程序需要知道上一个处理程序的结果的处理程序链

What pattern to use?: Chain of handlers where next handler needs to know the result of previos handler

我正在研究一个实施了责任链模式的解决方案。链中的所有处理程序独立工作,在某些情况下,根据输入,链被处理程序断开,因为无需继续处理下一个处理程序。在收到新的更改请求之前,它一直运行良好。:(

现在我有一个案例,我需要根据我以前的处理程序的结果做出决定。 示例:我们有一个基于 FirstName 和 Last 的对象,我们构建电子邮件并通知经理

第一个处理程序:构建电子邮件地址(如果不存在)

第二个处理程序:如果已创建电子邮件(并且不是新电子邮件),我们需要通知经理

所以第二个处理程序依赖于第一个处理程序action/result

选择责任链:我是否通过包装输入并添加更多数据并将其用作下一个处理程序的输入来打破模式?

选择装饰器:如果我不希望流程继续进行,我是否通过打破链条来打破模式?

或者还有第三种选择?

如果我能正确理解你的描述,

Chain of Responsibility 不适合您的工作,因为链中的每个处理程序都试图处理一个对象或请求。在处理过程中更改对象违反了此模式。

decorator 也不是适合您的问题的设计模式。这是结构设计模式,但据我了解,你需要一个行为设计模式。

State Pattern 在您的场景中有意义。根据你的考试,有一些状态

第一状态:Building Email address

第二状态:Notifying manager

等等

Am I breaking the pattern by wrapping the input and add some more data and use it as an input for my next handler?

可能不会。只要您为每个处理程序维护相同的合同,就可以了。输入可以是可变的,每个处理程序都可以修改它。那没问题。输入也可以有多态行为,所以你可以用装饰器包装它来修改那个行为,只要装饰器在处理程序之间保持相同的契约。