??管道-过滤器模式是一种面向数据流的软件体系结构。主要由管道和过滤器组成,过滤器为一个具体的处理模块,接受输入数据然后进行一定的处理,最后进行输出;管道是传输数据的组件,用于将数据从一个过滤器的输出接口传送到下一个过滤器的输入接口。
??管道-过滤器模式可以很好地实现功能分解,通过将不同的功能用不同的过滤器进行实现,然后在用管道将各个过滤器相连,可以很好地实现封装与功能分解,利用管道-过滤器模式架构开发的软件可以很好地进行移植,提高了软件模块的重用性,同时也可以方便地将某一个旧过滤器用一个新过滤器进行更换,实现功能的修改或者更新,而不用修改软件项目中其他的过滤器。
??管道-过滤器模式由两大组件构成。一个为过滤器,另一个为管道。
??过滤器:主要功能为从输入接口中读取数据,然后经过特定的处理,将结果数据置于输出接口。过滤器是一个独立的实体,只负责自身的处理,不用考虑其他过滤器的输入和输出数据。过滤器分为三类,分别为输入过滤器、处理过滤器和输出过滤器。
??管道:是连接各个过滤器的组件,负责过滤器间数据的传输,充当过滤器之间数据流的通道。
??最典型的应用是编译系统,编译系统主要包括词法分析器,语法分析器,语义分析与中间代码生成器,优化器,目标代码生成器等对源程序进行处理的过程。可以将每个处理过程看做一个过滤器,然后通过管道进行连接,然后就组成了一个编译系统。
??如上图所示源程序输入到编译系统,编译系统先经过词法分析过滤器,词法分析过滤器读取输入的数据,然后进行词法分析按词法规则得出各类单词,最后将分析得出的结果在输出接口输出;管道将该词法分析结果传送到语义分析过滤器,语义分析与中间代码生成过滤器检测程序代码有无语义错误,没有错误则生成中间代码并输出,若有错则进行错误处理;然后再经管道将中间代码传送到优化器,…按照过滤器处理,管道进行数据传送这种模式最终得到编译后的数据,这就是管道-过滤器的最典型的应用。
原文:https://www.cnblogs.com/liuxining/p/9069476.html