责任链可以有多个节点修改请求吗?

时间:2012-11-12 19:02:37

标签: algorithm design-patterns chain-of-responsibility

如果我有多个节点需要修改请求,那么仍然可以使用“责任链”设计模式吗?或者,只有当一个(未知)节点将专门处理请求时才使用此模式?

IE:节点2和节点3都需要影响请求(R)。因此,即使节点2处理请求,我仍然希望继续将列表中的请求传递给下一个处理程序

                    +--------+ (R)  +--------+ (R)  +--------+ (R)
Client Request (R)  | Node 1 |----->| Node 2 |----->| Node 3 |----->etc...
                    +--------+      +--------+      +--------+

1 个答案:

答案 0 :(得分:0)

从我的角度来看,最好使用pipes and filters模式,因为每个步骤都会添加某种转换和/或验证。

此图片取自上述

enter image description here

在任何时候,其中一个过滤器可以决定处理请求,而不是将其传递给下一个过滤器。在上面的示例中,(如果它是一个http请求),未经身份验证的请求将导致401 http状态代码。