5

我有点困惑应该在哪些情况下使用这些模式,因为从某种意义上说,它们似乎与我相似?

我理解分层是在系统复杂的情况下使用的,可以按照层次来划分,所以每一层都有不同层次的功能,使用较低层次的功能,同时将其功能暴露给较高层次等级。

另一方面,Pipe-and-Filter 是基于处理数据的独立组件,并且可以通过管道连接,因此它们构成一个执行完整算法的整体。

但是如果层次结构不存在,那么模块的顺序是否可以改变?

一个让我困惑的例子是编译器。这是一个管道和过滤器架构的例子,但是如果我没记错的话,一些模块的顺序是相关的?

一些澄清事情的例子会很好,以消除我的困惑。提前致谢...

4

2 回答 2

9

也许现在回答为时已晚,但无论如何我都会尝试。两种架构风格之间的主要区别在于数据流。

一方面,对于 Pipe-and-Filter,数据从第一个过滤器推送到最后一个过滤器。他们将被推动,否则,该过程将不会被视为成功。例如,在汽车制造厂中,每个工位一个接一个。汽车将从第一站组装到最后一站。如果一切顺利,您最终将获得一辆完整的汽车。对于编译器示例也是如此。您从最后一个编译过程中获得二进制代码。

另一方面,分层架构规定组件被分组在所谓的层中。通常,客户端(访问系统的用户或组件)只能从最顶层访问系统。他也不关心系统有多少层。他只关心他正在访问的层(最顶层)的结果。这与输出来自最后一个过滤器的管道和过滤器不同。

此外,正如您所说,同一层中的组件正在使用来自较低层的“服务”。但是,并非必须访问来自较低层的所有服务。也不是上层必须访问下层。只要客户得到他想要的东西,系统就可以工作。与 TCP/IP 架构一样,用户从应用层使用 Web 浏览器,却不知道 Web 浏览器或任何底层协议如何工作。

对于您的问题,分层架构中的“层次结构”只是一个逻辑模型。您可以说它们是包或某些组件组,它们在链中相互访问。这里的关键点是结果也必须从最后一个组件返回到第一个组件(客户端正在访问的位置)的链中返回。(与客户端从最后一个组件获取结果的管道和过滤器相反。)

于 2014-05-04T11:38:47.777 回答
4

1.)分层架构分层架构,它将整个系统视为-

结构层次

软件系统被分解为不同层次的逻辑模块。

然而

2.)管道和过滤器是一种数据流架构,它将整个系统视为-

对连续数据集的一系列转换

其中数据和操作是相互独立的。

于 2015-03-10T09:55:16.837 回答