管道过滤器与责任链的区别

时间:2014-11-27 16:03:58

标签: design-patterns

管道过滤器和责任链模式的区别是什么。

对我而言,如果不是相同的话,这两种模式非常相似。但也许我会错过一些东西。

THX

1 个答案:

答案 0 :(得分:6)

这些完全不同。在“管道和过滤器”中,您将复杂算法划分为小块,这些块以串行方式执行 - 作为“管道”。第一个乘数,下一个采用乘法值计算平方,第三个采用乘法和平方值并加10,依此类推......

http://en.wikipedia.org/wiki/Pipeline_%28software%29

在“责任链”中,您将“应用程序”划分为小型处理程序,每个处理程序执行一个特定的操作以响应触发它的命令。你在链中连接它们并将命令传递给第一个,它执行它(如果它处理这个特定的一个),或者将它“传递到链” - 传递给下一个对象。因此,如果您传递命令“print status”,它将被传递给第一个对象,(例如)将其传递下去,因为它只处理“exit”命令,下一个对象也传递它,因为它处理(例如) “abort”命令,重复此过程,直到链中的一个对象决定处理此命令(或直到链结束)。

http://en.wikipedia.org/wiki/Chain-of-responsibility_pattern