这两种设计模式有什么区别?它似乎非常类似于我,一个处理单元(层或过滤器)做一些数据处理和拉/推数据到另一个处理单元。单元n只与n+1和n-1单元通信,有定义特定单元提供的功能的接口。
有什么不同吗?
编辑:也许有一个不同之处应该是数据流。在层中流可以是top-down、bottom-up和/或通信between内部的一些层。在管道和过滤器中,数据流从单元1开始,到单元n (而不是back)。
发布于 2015-04-27 02:06:31
就组织而言,它看起来可能与层和管道和过滤器模式相似(一个组件获取输入并将结果传递给另一个组件),但在功能上并非如此。它们是建筑模式。
如果我们使用定义
管道和过滤器模式将较大的处理任务划分为一系列由通道(管道)连接的较小的、独立的处理步骤(过滤器)。
在层模式中,每个层与相邻层通信,并负责其自身的一些处理,将请求传递到其下一层,并回答来自其上一层的请求。
比较
管道和过滤器模式允许由称为filters 的小程序组装系统,而是一个分层系统,系统的不同层负责系统的特定功能。
过滤器具有输入和输出,而分层体系结构风格的每个层都是具有定义良好的接口和应用程序中一些众所周知的依赖项的软件包(或系统)。
过滤器被组装成一个链,其中每个过滤器从链中的前一个过滤器获取数据,处理数据,并将数据传递给链中的下一个过滤器,而分层系统数据流中的可以是双向的,这样可以通过或不借助其下面的层来满足对上面层的所有请求。
秩序可能不重要。例如,您可以对消息进行身份验证,然后过滤消息的内容,或者可以先过滤内容,然后执行身份验证,而按分层系统顺序排列的总是相同的,不能交换。
希望这能有所帮助。
发布于 2015-04-26 09:51:43
没有结构上的差异,只有意图和隐喻上的差异,才能在头脑中产生不同的画面。
分层架构(上下隐喻)的意图通常是通过不同的抽象级别进行映射,例如从业务级别的概念到底层的网络或数据库操作,然后再回来。
管道和过滤器的意图(管道隐喻)通常是关于类似抽象级别的转换。
https://stackoverflow.com/questions/29875473
复制相似问题