在管道-过滤器架构模式中,每个构件都有一组输入,输出,构件读取输入的数据流,经过内部处理后,产生输出数据流,该过程主要完成输入流的变换及增量计算。这里的构件就是过滤器,而连接过滤器的就是管道,这个管道将上一个过滤器处理的结果数据流传送到下一个过滤器,在进行其他的计算。
简单来说,管道-过滤器模式结构就像是一条产品加工流水线,原材料在流水线上经过一个个工人的加工,最终生产出产品。这里的工人就是过滤器,将材料进行加工,流水线中的传送带就是管道,将一个工人加工过得材料传送给下一个工人继续加工。
应用场景
1.由一个应用程序所需的处理可以很容易地被分解成一组离散的,独立的步骤。
2.由应用程序执行的处理步骤具有不同的可扩展性要求。
优势
编译器就是基于管道过滤器模式设计的:
输入:源程序
预处理:负责宏展开和去掉注释等工作。
编译:进行词法分析、语法分析、语义分析、代码优化和代码产生。
汇编:负责把汇编代码转换成机器指令,生成目标文件。
链接:负责把多个目标文件、静态库和共享库链接成可执行文件/共享库。
输出:可执行文件/共享库。
编译器的每个步骤都是相互分离的,可以独立存在,每个步骤完成之后得到的结果交给下一个步骤进行处理,每一步的处理之间都依靠输入输出的数据流来维系关系,正好符合管道-过滤器模式,并且每个处理都只是依赖上一步处理的结果,并不依赖处理过程,所以程序的耦合度很低,内聚性很高,每一步都有很高的扩展性。