阅读笔记(六)

概述

输入————>处理(核心)——————>输出

 

组成

过滤器按照对流经它的数据操作的不同,可分为3类过滤器:输入过滤器,处理过滤器和输出过滤器。下面将对这三类过滤器进行介绍。

(1)输入过滤器

输入过滤器处在问题所在的外部世界与软件系统的边界处,是系统数据流的源点。它负责接收外界信息并转化为系统所需的数据流。

(2)处理过滤器

处理过滤器是系统内变换数据流的部件,它有一个入口和一个出口,数据经入口流入,经过处理过滤器内部处理之后从出口流出。

(3)输出过滤器

从建立完备的,首尾一致的可重用的软件部件组的角度出发,正如输入过滤器是系统数据流的起点,那么输出过滤器是数据流的终点

 

优点

(1)设计人员将整个系统的输入输出行为理解为单个过滤器行为的叠加与组合。这样可以将问题分解,化繁为简。

(2)任何两个过滤器,只要它们之间传送的数据遵守共同的规约就可以相连接。每个过滤器都有自己独立的输入输出接口,如果过滤器间传输的数据遵守其规约,只要用管道将它们连接就可以正常工作。

(3)整个系统易于维护和升级:旧的过滤器可以被替代,新的过滤器可以添加到已有的系统上。软件的易于维护和升级是衡量软件系统质量的重要指标之一,在管道-过滤器模型中,只 要遵守输入输出数据规约,任何一个过滤器都可以被另一个新的过滤器代替,同时为增强程序功能,可以添加新的过滤器。这样,系统的可维护性和可升级性得到了保证。

(4)确保并发

 

缺点

(1)通常导致系统处理过程的成批操作。

(2)需要设计者协调两个相对独立但又存在关系的数据流。

(3)可能需要每个过滤器自己完成数据解析和合成工作(如加密和解密),从而导致系统性能下降,并增加了过滤器具体实现的复杂性。

 

相应的设计模式

(1) 职责链模式(Chain Of Responsibility)
职责链设计模式的意图就是使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。其实管道和过滤器模式就是职责链模式的抽象,把它应用到软件体系架构中.

(2) 命令模式(Command)
命令模式的意图将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。在管道和过滤器模式中每个过滤器一般使用命令模式,把请求封装成一个命令进行处理.

(3) 装饰模式(Decorator)
装饰模式的意图就是动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。

 

posted on 2019-04-05 22:05  渔夫的梦  阅读(110)  评论(0编辑  收藏  举报