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