软件架构模式之管道-过滤器模式--分析

  在管道-过滤器架构模式中,每一个构件都有一组输入,输出,构件读取输入的数据流,通过内部处理后,产生输出数据流,该过程主要完成输入流的变换及增量计算。这里的构件就是过滤器,而链接过滤器的就是管道,这个管道将上一个过滤器处理的结果数据流传送到下一个过滤器,在进行其余的计算。架构

  简单来讲,管道-过滤器模式结构就像是一条产品加工流水线,原材料在流水线上通过一个个工人的加工,最终生产出产品。这里的工人就是过滤器,将材料进行加工,流水线中的传送带就是管道,将一个工人加工过得材料传送给下一个工人继续加工。性能

  

      

 

应用场景优化

  1.由一个应用程序所需的处理能够很容易地被分解成一组离散的,独立的步骤。
  2.由应用程序执行的处理步骤具备不一样的可扩展性要求。spa

优点设计

 

  (1)使得构件具备良好的隐蔽性和高内聚、低耦合的特色;

 

  (2)容许设计者将整个系统的输入/输出行为当作是多个过滤器的行为的简单合成;

 

  (3)支持软件重用。重要提供适合在两个过滤器之间传送的数据,任何两个过滤器均可被链接起来;

 

  (4)系统维护和加强系统性能简单。新的过滤器能够添加到现有系统中来;旧的能够被改进的过滤器替换掉;

 

  (5)容许对一些如吞吐量、死锁等属性的分析;

 

  (6)支持并行执行。每一个过滤器是做为一个单独的任务完成,所以可与其它任务并行执行;
案例

  编译器就是基于管道过滤器模式设计的:
blog

  输入:源程序
  预处理:负责宏展开和去掉注释等工做。
  编译:进行词法分析、语法分析、语义分析、代码优化和代码产生。
  汇编:负责把汇编代码转换成机器指令,生成目标文件。
  连接:负责把多个目标文件、静态库和共享库连接成可执行文件/共享库。
  输出:可执行文件/共享库。编译器

  编译器的每一个步骤都是相互分离的,能够独立存在,每一个步骤完成以后获得的结果交给下一个步骤进行处理,每一步的处理之间都依靠输入输出的数据流来维系关系,正好符合管道-过滤器模式,而且每一个处理都只是依赖上一步处理的结果,并不依赖处理过程,因此程序的耦合度很低,内聚性很高,每一步都有很高的扩展性。产品

相关文章
相关标签/搜索