提问人:jnemecz 提问时间:4/26/2015 最后编辑:John Saundersjnemecz 更新时间:12/22/2018 访问量:4743
图层和管道和过滤器之间的区别?
Difference between Layers and Pipes and filters?
问:
这两种设计模式之间有什么区别?这似乎与我非常相似,一个处理单元(层或过滤器)进行一些数据处理并将数据拉/推送到另一个处理单元中。单元仅与 和 单元通信,有定义一个特定单元提供的功能的接口。n
n+1
n-1
有什么区别?
编辑:也许一个区别应该是数据流。在层中,流可以是,和/或内部的一些层进行通信。在管道和筛选器中,数据流从单元开始,然后转到单元(而不是返回)。top-down
bottom-up
between
1
n
答:
没有结构上的差异,只有意图和隐喻的差异在脑海中唤起了不同的画面。
分层架构(向上/向下隐喻)的意图通常是通过不同的抽象级别进行映射,例如,从业务级概念到低级网络或数据库操作,然后再返回。
管道和过滤器(管道隐喻)的意图通常是关于类似抽象级别的转换。
在组织方面,看起来图层和管道和过滤器模式是相似的(一个组件接受输入并将结果传递给另一个组件),但从功能上讲,它们不是。它们是架构模式。
如果我们按照定义:
管道和过滤器模式将较大的处理任务划分为一系列较小的独立处理步骤(过滤器),这些步骤通过通道(管道)连接。
在层模式中,每一层都与相邻层进行通信,并负责自己的一些处理,将请求传递给其下面的层,并应答来自其上层的请求。
比较:
管道和过滤器模式允许系统由称为过滤器的小程序组装而成,而分层系统是系统的不同层负责系统的特定功能的系统。
筛选器具有输入和输出,而分层体系结构样式中的每一层都是一个软件(或系统)包,这些软件包具有定义良好的接口和应用程序中的一些众所周知的依赖项。
过滤器被组装成一个链,其中每个过滤器从链中的前一个过滤器获取数据,处理数据,并将数据传递给链中的下一个过滤器,而在分层系统中,数据流可以是双向的,因此上面层的所有请求都可以在有或没有其下层的帮助下得到满足。
顺序可能无关紧要。例如,您可以对消息进行身份验证,然后过滤消息的内容,或者您可以先过滤内容然后进行身份验证,而在分层系统中,顺序始终相同且不能互换。
希望这会有所帮助。
评论