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

Ank*_*ani 3 oop design-patterns

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

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

Jak*_*zyk 8

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

  1. 如果它应该处理请求
  2. 如果它应该将请求传递给下一个链元素

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

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