我有点困惑,在哪种情况下应该使用这些模式,因为从某种意义上说,它们似乎与我相似?
我知道,当系统复杂时使用了分层,并且可以按其层次结构进行划分,因此每个层在不同级别的层次结构上具有一个函数,并且在较低级别上使用这些功能,而在同一时间中功能提高到更高的水平。
另一方面,管道和过滤器基于处理数据的独立组件,并且可以通过管道连接,因此它们使整体执行完整的算法。
但是,如果不存在层次结构,那么是否可以更改模块的顺序?
和一个让我感到困惑的示例是编译器。这是管道和过滤器架构的一个示例,但是某些模块的顺序是相关的,如果我没有错?
一个澄清事情的例子会很好,以消除我的困惑。预先感谢...
也许回答为时已晚,但我还是会尝试的。两种架构样式之间的主要区别是数据流。
一方面,对于管道和过滤器,将数据从第一个过滤器推向最后一个。否则,他们将被推动,否则,该过程将不会取得成功。例如,在汽车制造工厂中,每个站都彼此放置。该汽车将从第一个车站到最后一个车站组装。如果什么都没有错,您将在最后获得一辆完整的汽车。编译器示例也是如此。从上一个编译过程中,您将获得二进制代码。
另一方面,分层体系结构决定组件分组为所谓的层。通常,客户端(访问系统的用户或组件)只能从最高层访问系统。他也不在乎该系统拥有多少层。他只关心他所访问的层的结果(这是最高的)。这与输出来自最后一个过滤器的管道和过滤器不同。
,正如您所说,同一层中的组件正在使用下层的"服务"。但是,并非必须访问下层的所有服务。上层也不必须完全访问下层。只要客户得到他想要的东西,据说该系统可以正常工作。像TCP/IP体系结构一样,用户正在使用应用程序层的Web浏览器,而没有任何了解Web浏览器或任何基础协议的工作方式。
在您的问题上,分层体系结构中的"层次结构"只是一个逻辑模型。您只能说它们是包装或一些组件组中互相访问的组件。这里的关键点是,结果必须在链中返回,从最后一个组件返回到第一个组件(也在客户端访问)中。(与客户从最后一个组件获得结果的管道和过滤器相反。)
1。)层次体系结构是层次结构架构,它将整个系统视为 -
结构的层次结构
该软件系统分解为不同层次结构级别的逻辑模块。
其中
2。)管道和过滤器是 data -flow架构,它将整个系统视为 -
连续数据集的一系列转换
数据和操作是彼此独立的。