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

时间:2015-04-26 08:37:41

标签: design-patterns

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

有什么区别?

编辑:也许应该是数据流的一个区别。在图层中,流可以是top-downbottom-up和/或通信between内部的某些图层。在管道和过滤器中,数据流从单元1开始,然后转到单元n(不返回)。

2 个答案:

答案 0 :(得分:8)

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

如果我们选择定义

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

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

<强>比较

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

过滤器具有输入和输出分层体系结构样式中的每个层都是一个软件(或系统)包,其中包含明确定义的接口和一些众所周知的依赖关系申请。

过滤器组装成一个链,每个过滤器从链中的前一个过滤器获取数据,处理数据,并将数据传递到分层系统中链中的下一个过滤器数据流可以是双向的,这样上面的所有层的请求都可以通过来实现,有或没有帮助下面的层。

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

希望这有帮助。

答案 1 :(得分:-1)

没有结构差异,只有意图和隐喻的差异才能在脑海中形成不同的图片。

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

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