码迷,mamicode.com
首页 > 其他好文 > 详细

面向模式的软件体系结构(3)--管道与过滤器

时间:2015-08-27 00:28:24      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:架构   结构   设计   软件   

看了一整晚,不甚理解管道/过滤器。常见的案例Linux命令管道是比较好理解的,但加之混乱的主动/被动的动态概念,就不太好理解了。暂先整理笔记,后面再回顾。


这是看的第2类体系结构,不是有所收获:大致可抽象出一些常见设计的范式

1、体系结构现过程关键点:拆、定义接口/格式、合、出错处理

2、优点关注:重用度  考虑到一般变更的设计是优秀系统深化的一个主要助推器”


【概述】

管道和过滤器(Pipes and Filters)为处理数据流的系统提供了一种结构。每个处理步骤封装在一个过滤器组件中,数据通过相邻过滤器之间的管道传输。重组过滤器可以建立相关系统族。

【细节】
例子 -- Java语言的解析过程(词法分析,语法分析,语义分析,中间代码生成,中间代码优化)
语境 -- 处理数据流
问题 -- 存在不同的输入数据源;想要达到未来可灵活重新排列步骤,需要提前做好规划;不相连的处理步骤不共享信息etc
解决方案 -- 将系统任务分成几个顺序的处理步骤。
结构 --
1、随后的流水线单元从过滤器中拉出输出数据(被动过滤器)
2、前面的流水线单元把新的输入数据压入过滤器(被动过滤器)
3、最常用的,过滤器以循环方式工作,从流水线中拉出其输入数据并且将其输出数据压入流水线(主动过滤器)

过滤器,职责:获得输入数据;在其输入数据上执行1个函数;供给输出数据
管道表示过滤器之间的连接,职责:转化数据,缓冲数据,同步主动邻居

动态特性 -- 主动被动过滤器之区分(暂搞不懂)
实现 -- 
1、为把系统任务分成一系列处理阶段
2、定义沿每个管道传输的数据格式
3、决定如何实现每个管道连接
4、设计和实现过滤器
5、设计出错处理
6、建立处理流水线

已解决的例子 -- TCP/IP协议
已知使用:Unix流水线任务:程序编译、文档创建
效果 --
优点:不一定需要中间文件、过滤器交换/重组灵活性、重用、快速原型、并行处理效率
不足:共享状态信息昂贵/不灵活、并行处理效率未必高、数据转换额外开销、错误处理


版权声明:本文为博主原创文章,未经博主允许不得转载。

面向模式的软件体系结构(3)--管道与过滤器

标签:架构   结构   设计   软件   

原文地址:http://blog.csdn.net/jeffreynicole/article/details/48015307

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!