Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 责任链是否可以让多个节点修改请求?_Algorithm_Design Patterns_Chain Of Responsibility - Fatal编程技术网

Algorithm 责任链是否可以让多个节点修改请求?

Algorithm 责任链是否可以让多个节点修改请求?,algorithm,design-patterns,chain-of-responsibility,Algorithm,Design Patterns,Chain Of Responsibility,如果我有多个节点需要修改一个请求,那么仍然使用“责任链”设计模式是一个好主意吗?或者,只有当只有一个(未知)节点专门处理请求时,才应该使用此模式吗 IE:节点2和节点3都需要影响请求(R)。因此,即使节点2处理该请求,我仍然希望继续将该请求沿着列表传递给下一个处理程序 +--------+ (R) +--------+ (R) +--------+ (R) Client Request (R) | Node 1 |----->| Node 2

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

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

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

在我看来,您最好使用模式,因为每一步都会添加某种转换和/或验证

这张照片是从上面类似的地方拍摄的


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

嗯??使用这种设计,你想在php中做什么?@Neal在*nix系统上的一个php站点中,我必须创建一个模块,该模块需要验证目录树的权限和用户/组设置。因此,对于树中的每个请求,我需要通过这个链发送它,节点1可能会验证请求是否为目录并检查设置了正确的perm,节点2可能会检查请求是否为文件并验证perm。但是,每个请求还需要验证每个请求的用户/组集。但是你是对的,我不需要把这个问题贴上PHP(习惯)的标签,这不就是责任链吗?