如果我有多个节点需要修改请求,是否仍然使用“责任链”设计模式是个好主意?还是仅当只有一个(未知)节点将专门处理请求时才使用此模式?
IE:节点 2 和节点 3 都需要影响请求 (R)。所以即使节点 2 处理了请求,我仍然想继续将请求向下传递到列表中的下一个处理程序
+--------+ (R) +--------+ (R) +--------+ (R)
Client Request (R) | Node 1 |----->| Node 2 |----->| Node 3 |----->etc...
+--------+ +--------+ +--------+
最佳答案
在我看来,使用 pipes and filters 会更好模式,因为每个步骤都会添加某种转换和/或验证。
此图取自上图
在任何时候,其中一个过滤器可以决定处理请求而不将其传递给下一个过滤器。在上面的示例中,(如果它是一个 http 请求),未经身份验证的请求将导致 401 http 状态代码。
关于algorithm - 责任链能否有多个节点修改请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13349822/