图层和管道和过滤器之间的区别?

Difference between Layers and Pipes and filters?

提问人:jnemecz 提问时间:4/26/2015 最后编辑:John Saundersjnemecz 更新时间:12/22/2018 访问量:4743

问:

这两种设计模式之间有什么区别?这似乎与我非常相似,一个处理单元(层或过滤器)进行一些数据处理并将数据拉/推送到另一个处理单元中。单元仅与 和 单元通信,有定义一个特定单元提供的功能的接口。nn+1n-1

有什么区别?

编辑:也许一个区别应该是数据流。在层中,流可以是,和/或内部的一些层进行通信。在管道和筛选器中,数据流从单元开始,然后转到单元(而不是返回)。top-downbottom-upbetween1n

设计模式

评论

0赞 Sivaramvt 4/26/2015
我想说的是,在概念上存在巨大的差异。(1)层模式更像是构建一个堆栈。例如,以典型的JEE为例,你从资源层开始,然后是数据,业务以表示结束。(2)管道和过滤器用于逐步处理、转换和过滤数据。例如,消息管道。
0赞 John Saunders 4/27/2015
我已经编辑了你的标题。请参阅“问题是否应该在标题中包含”标签“,其中的共识是”不,他们不应该”。

答:

-1赞 ᴇʟᴇvᴀтᴇ 4/26/2015 #1

没有结构上的差异,只有意图和隐喻的差异在脑海中唤起了不同的画面。

分层架构(向上/向下隐喻)的意图通常是通过不同的抽象级别进行映射,例如,从业务级概念到低级网络或数据库操作,然后再返回。

管道和过滤器(管道隐喻)的意图通常是关于类似抽象级别的转换。

11赞 Guanxi 4/27/2015 #2

在组织方面,看起来图层和管道和过滤器模式是相似的(一个组件接受输入并将结果传递给另一个组件),但从功能上讲,它们不是。它们是架构模式。

如果我们按照定义

管道和过滤器模式将较大的处理任务划分为一系列较小的独立处理步骤(过滤器),这些步骤通过通道(管道)连接。

在层模式中,每一层都与相邻层进行通信,并负责自己的一些处理,将请求传递给其下面的层,并应答来自其上层的请求。

比较

管道和过滤器模式允许系统由称为过滤器的小程序组装而成,分层系统是系统的不同层负责系统的特定功能的系统。

筛选器具有输入和输出,分层体系结构样式中的每一层都是一个软件(或系统)包,这些软件包具有定义良好的接口和应用程序中的一些众所周知的依赖项。

过滤器被组装成一个链,其中每个过滤器从链中的前一个过滤器获取数据,处理数据,并将数据传递给链中的下一个过滤器,在分层系统中,数据流可以是双向的,因此上面层的所有请求都可以在有或没有其下层的帮助下得到满足。

顺序可能无关紧要。例如,您可以对消息进行身份验证,然后过滤消息的内容,或者您可以先过滤内容然后进行身份验证,在分层系统中,顺序始终相同且不能互换。

希望这会有所帮助。