什么是责任链模式
在一条流水线的链条上分布至多个处理节点(Handler),当请求源(RequestSource)流入这条流水线的链条,请求源中的数据顺着流水线的链条传递,直到有一个处理节点处理了它为止。
使用场景
很多框架如 mybatis、servlet 的 filter、dubbo、安全框架诸如 Spring security、apache shiro 都应用到了责任链模式。
实现方式
根据处理链不同的顺序和结构,分为以下两种方式
方式一
通过处理器集合来设置处理顺序,如下图:
- HandlerChain
负责维护调用链条的顺序。 - Handler
请求源(RequestSource)的具体处理者,负责对数据的处理以及决定是否进入下一个Handler。
方式二
该方式利用了链表的一部分特性,在 Handler 里指定下一个要执行的 Handler ,如下图:
- Handler
负责指针(next)以及逻辑处理。