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


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

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

      

          

    应用场景

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

    优势

      (1)使得构件具有良好的隐蔽性和高内聚、低耦合的特点;
      (2)允许设计者将整个系统的输入/输出行为看成是多个过滤器的行为的简单合成;
      (3)支持软件重用。重要提供适合在两个过滤器之间传送的数据,任何两个过滤器都可被连接起来;
      (4)系统维护和增强系统性能简单。新的过滤器可以添加到现有系统中来;旧的可以被改进的过滤器替换掉;
      (5)允许对一些如吞吐量、死锁等属性的分析;
      (6)支持并行执行。每个过滤器是作为一个单独的任务完成,因此可与其它任务并行执行;
    案例

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

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

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

  • 相关阅读:
    Python——一个简单的类的创建和应用
    Python——Python+Pydev出现SyntaxError: Non-UTF-8 code
    Python——使用第三方库Pillow生成图片缩略图
    Excel——使用INDEX和SMALL实现条件筛选
    关与node-gpy
    云开发-web应用中使用数据库
    分享阿里的技术
    解决docker中apt-get不管用
    算法-二分查找与树的增删改查
    云开发(小程序端,web端+博客搭建部署)
  • 原文地址:https://www.cnblogs.com/Zhanghaonihao/p/9097034.html
Copyright © 2020-2023  润新知