责任链模式用作流水线的技术疑问:是否仍属该模式及相关命名
链式流水线实现的模式归类问题解答
1. 这种实现算不算GoF责任链模式?
不算。经典GoF责任链的核心逻辑是请求在链上传递,直到被某个处理器处理后就终止——本质是让多个对象都有机会处理请求,但最终只有一个(或零个)处理器完成任务,核心目标是解耦请求发送方和接收方。
而你实现的流水线场景,核心是所有处理器依次执行,每个步骤负责全局任务的一部分,还得依赖前序的处理结果,所有节点都要参与才能完成最终任务,这和责任链“单一处理者”的核心意图完全不符,所以不属于GoF定义的责任链模式。
2. 这种实现有没有专门名称?
有,最常用的叫法是Pipeline模式(流水线模式),也有人称它为处理链(Processing Chain)。
它的核心特征包括:
- 每个处理节点只专注单一子任务,职责单一;
- 节点之间通过输入输出衔接,前一步的输出作为后一步的输入;
- 所有节点按顺序执行,共同完成一个完整业务流程。
这种模式在很多领域都有广泛应用:比如编译流程中的词法分析→语法分析→代码生成,数据ETL的抽取→转换→加载,还有不少HTTP中间件框架场景(当所有中间件都必须执行,而非匹配到就终止的情况)。
你用来生成HTML img标签的例子就是典型的Pipeline场景:比如第一步拼接基础的<img src="xxx",第二步添加alt属性,第三步补充宽高参数,最后一步闭合标签,每一步都对结果做增量加工,凑齐所有要素才完成最终的标签生成。
内容的提问来源于stack exchange,提问作者Ettore Galli
相关产品推荐
相关产品推荐

