管道/过滤器模式的体系结构是面向数据流的软件体系结构。在管道/过滤器模式中,每个组件(过滤器)都有一组输入/输出, 组件读取输入的数据流,经过内部处理后,产生输出的数据流,该过程主要完成输入流的变换及增量计算。该模式如下图所示:
它最典型的应用是编译系统和批处理系统等。一个普通的编译系统包括词法分析器,语法分析器,语义分析与中间代码生成器,代码优化器,目标代码生成器等一系列对源程序进行处理的过程。人们可以将编译系统看作一系列过滤器的连接体,按照管道/过滤器的体系结构进行设计。此外,这种体系结构在其它一些领域也有广泛的应用。因此它成为软件工程和软件开发中的一个突出的研究领域。
管道/过滤器的组成如下:
(1)过滤器:过滤器按照对流经它的数据操作的不同,可分为如下三类:
1)输入过滤器:处在问题所在的外部世界与软件系统的边界处,是系统数据流的源点。它负责接收外界信息并转化为系统所需的数据流。
2)处理过滤器:是系统内变换数据流的部件,它有一个入口和一个出口,数据经入口流入,经过处理过滤器内部处理之后从出口流出。
3)输出过滤器:从建立完备的,首尾一致的可重用的软件部件组的角度出发,正如输入过滤器是系统数据流的起点,那么输出过滤器是数据流的终点。
(2)管道:管道作为过滤器之间数据流动的通道的软件部件,它的主要功能是连接各个过滤器,充当过滤器之间数据流的通道。管道具有数据缓冲以及提高过滤器之间的并行性操作的作用。管道由数据缓冲区,向数据缓冲区读数据和写数据,判断管道为空或已满等操作定义组成。
管道/过滤器模式的优点:
(1)高内聚、低耦合;
(2)多过滤器简单合成;
(3)功能模块重用;
(4)便于维护;
(5)支持特定分析;
(6)支持并行操作。
管道/过滤器模式的缺点:
(1)导致系统成批操作;
(2)需协调数据流;
(3)性能下降,实现复杂。