分层和管道和过滤器

神户万基诺比

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

我了解到,分层是在系统复杂时使用的,并且可以按其层次结构进行划分,因此每一层在层次结构的不同级别上都有一个功能,并在较低级别上使用该功能,同时将其功能暴露给较高级别等级。

另一方面,“管道和过滤器”基于处理数据的独立组件,并且可以通过管道连接,因此它们构成了一个执行完整算法的整体。

但是,如果层次结构不存在,那么是否可以更改模块的顺序就成为一个问题。

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

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

BiGGA

也许为时已晚,但我还是会尝试的。两种体系结构样式之间的主要区别在于数据流。

一方面,对于“管道过滤器”,数据从第一个过滤器推送到最后一个过滤器。并且他们将被推动,否则,该过程将不会被视为成功。例如,在汽车制造厂中,每个工作站都一个接一个地放置。该车将从第一个工位组装到最后一个工位。如果一切正常,最后您将获得一辆完整的汽车。对于编译器示例也是如此。您从最后的编译过程之后获得了二进制代码。

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

而且,正如您所说,同一层中的组件正在使用来自较低层的“服务”。但是,并非必须访问较低层的所有服务。也不是上层必须完全访问下层。只要客户得到他想要的东西,该系统就可以正常工作。像TCP / IP体系结构一样,用户正在从应用程序层使用Web浏览器,而无需了解Web浏览器或任何底层协议如何工作。

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章