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

问题描述:

如果我有多个节点需要修改请求,是否仍然使用“责任链”设计模式是一个好主意?或者只有当只有一个(未知)节点专门处理请求时才应该使用这种模式?责任链可以有多个节点修改请求吗?

IE:节点2和节点3都需要影响请求(R)。因此,即使节点2处理请求,我还是要继续在列表中向下请求传递给下一个处理

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

Eh?这个设计在** php **中想要做什么? – Neal

+0

@Neal在* nix系统上的PHP站点上,我必须创建一个模块,需要验证目录树的权限和用户/组设置。因此,对于树中的每个请求,我需要通过此链向下发送它,其中节点1可以验证请求是否为目录,并检查是否设置了正确的许可证,并且节点2可能会检查请求是否为文件并验证该许可证。但是,每个请求也需要验证每个请求的用户/组。但你是对的 - 我prolly不需要标记这个问题,因为PHP(习惯) – veilig

从我的观点,你会使用pipes and filters模式会更好点,因为每个步骤增加某种转换和/或验证。

该图像被从等拍摄上述

enter image description here

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

+1

不是这只是责任链? – veilig