责任链和过滤模式之间有什么区别

时间:2015-01-18 11:47:27

标签: oop design-patterns

责任链似乎与过滤模式非常相似。我想知道:

如果它们不同,那么哪个域适用而另一个不适用。

1 个答案:

答案 0 :(得分:8)

我认为主要区别在于,在过滤模式中,链中的所有过滤器都将按给定顺序执行。 责任链更具弹性 - 每个链元都决定两件事:

  1. 是否应该处理请求
  2. 如果它应该将请求传递给下一个链元素
  3. 责任链中的主要概念是将转向逻辑转换为链元素。 调用代码不必做出决定(通过一些复杂的IF语句)应该调用哪个逻辑,但“逻辑”(提取到链的元素)本身知道它是否应该处理请求。

    在我看来,过滤模式是责任链的简化变体。