责任链模式:Chain of Responsibility Pattern、行为型模式
责任链模式是将链中每一个节点看作一个对象,每个节点处理的请求均不同,且内部自动维护下一个节点对象。当一个请求从链式的首端发出时,沿着链的路径依次请求,直到处理完整个请求对象为止。
责任链模式核心在于 解耦请求与处理
责任链模式应用场景
1、可动态指定一组对象处理请求。
2、多个对象处理同一请求,但具体由哪个对象处理则运行时动态处理
责任链模式的优缺点
优点:
1、将请求与处理解耦
2、请求处理者只需关心自己感兴趣的请求进行处理,对于不感兴趣的请求,直接转发给下一个节点对象。
3、链路结构灵活,可以通过改变链路结构动态地新增或删减责任
4、容易扩展新的请求处理类,符合开闭原则。
缺点:
1、责任链太长或者请求时间过长会影响些许性能 2、如果存在循环引用,可能造成系统崩溃
责任链模式源码应用
1、JDK中的Filter接口 Spring实现 MockFilterChain
2、Netty串行化处理Pipeline,责任处理器接口ChannelHandler
3、大部分的权限框架也广为使用责任链模式:Spring Security、Apache Shiro