管道-过滤器模式学习总结

管道-过滤器模式

模式简介

  管道-过滤器模式是一种面向数据流的软件体系结构。主要由管道和过滤器组成,过滤器为一个具体的处理模块,接受输入数据而后进行必定的处理,最后进行输出;管道是传输数据的组件,用于将数据从一个过滤器的输出接口传送到下一个过滤器的输入接口。
  管道-过滤器模式能够很好地实现功能分解,经过将不一样的功能用不一样的过滤器进行实现,而后在用管道将各个过滤器相连,能够很好地实现封装与功能分解,利用管道-过滤器模式架构开发的软件能够很好地进行移植,提升了软件模块的重用性,同时也能够方便地将某一个旧过滤器用一个新过滤器进行更换,实现功能的修改或者更新,而不用修改软件项目中其余的过滤器。架构

模式具体结构组成

  管道-过滤器模式由两大组件构成。一个为过滤器,另外一个为管道。
  过滤器:主要功能为从输入接口中读取数据,而后通过特定的处理,将结果数据置于输出接口。过滤器是一个独立的实体,只负责自身的处理,不用考虑其余过滤器的输入和输出数据。过滤器分为三类,分别为输入过滤器、处理过滤器和输出过滤器。
  管道:是链接各个过滤器的组件,负责过滤器间数据的传输,充当过滤器之间数据流的通道。性能

模式优缺点

优势:

  1. 符合高内聚、低耦合的设计原则,能够方便地对过滤器进行替换或删除等操做。
  2. 支持模块的重用,能够将单个独立的过滤器应用到其余软件系统中
  3. 支持并行执行。每一个过滤器是一个独立的实体,能够单独运行,不受其余过滤器影响。

缺点:

  1. 不适合处理交互的应用。
  2. 传输的数据没有标准化,因此读入数据和输出数据存在着格式转换等问题,会致使性能的下降。

特定环境

  一个软件的处理流程由多个复杂的过程组成,并且每一个处理过程依次执行,前一个处理为后一个处理提供必要的数据,后一个过程须要前一个过程提供数据支持。每一个复杂的过程有本身独特的处理逻辑,能够对输入数据所有进行处理,也能够根据本身的特定状况只对一部分数据进行处理,或者做出一些特定的动做,最后输出最终的结果做为软件的执行结果。测试

特定环境中的问题

  软件由多个复杂的处理流程组成,每一个处理有本身独特的处理逻辑,流程不容易控制,每一个流程的输出不容易获得及时的反馈,编写代码较为复杂,处理流程混乱,不容易造成体系结构,不容易进行任务的分解与分工,并且代码不容易测试及维护。优化

问题解决方案

  采用管道-过滤器模式进行软件体系结构的设计。软件由多个独立的处理刘才能组成,则将每一个处理流程当作一个过滤器,过滤器是由一个输入接口、一个处理模块和一个输出接口组成,并且是一个独立的实体。知足处理过程的独立处理,接受输入和输出的要求。并且过滤器有本身的处理机制,能够对全部的输入都进行处理,还能够对一部分数据进行处理,还能够进行数据的检测,当数据不知足要求时,能够及时地作出回应,进行错误处理。并且管道做为数据的传输介质在过滤器之间进行数据的传输,很好地知足了流程的处理。同时在知足系统要求的状况下很好地知足了代码的分解,造成了不少独立的过滤器模块,使软件代码解耦合,作到了高内聚、低耦合的设计原则,因此很容易进行测试和维护,在某些过滤器须要替换或删除时,能够很好地进行操做,而不须要修改太多的代码,并且也不会影响到其余的过滤器,同时过滤器还能够重用。提升了代码的可重用性。因此经过应用管道-过滤器模式能够很好地解决软件须要进行流程处理的需求。设计

模式结构图

应用实例

  最典型的应用是编译系统,编译系统主要包括词法分析器,语法分析器,语义分析与中间代码生成器,优化器,目标代码生成器等对源程序进行处理的过程。能够将每一个处理过程看作一个过滤器,而后经过管道进行链接,而后就组成了一个编译系统。
3d

  如上图所示源程序输入到编译系统,编译系统先通过词法分析过滤器,词法分析过滤器读取输入的数据,而后进行词法分析按词法规则得出各种单词,最后将分析得出的结果在输出接口输出;管道将该词法分析结果传送到语义分析过滤器,语义分析与中间代码生成过滤器检测程序代码有无语义错误,没有错误则生成中间代码并输出,如有错则进行错误处理;而后再经管道将中间代码传送到优化器,…按照过滤器处理,管道进行数据传送这种模式最终获得编译后的数据,这就是管道-过滤器的最典型的应用。blog

参考文献:

  1. 李小龙,毛文林. 管道-过滤器模式的软件体系结构及其设计[J]. 计算机工程与应用,2003,(35):114-115+182.
  2. 蒋庆. 新型管道—过滤器模式的研究及其应用[D].江西师范大学,2004.
相关文章
相关标签/搜索