责任链模式
责任链模式(Chain of Responsibility Pattern)使多个对象都有机会处理请求,从而减少请求的发送者和接收者之间的耦合关系,为请求创建了一个接收者对象的链,沿着这条链传递该请求,直到有一个对象停止处理它为止。这种模式给予请求的类型,对请求的发送者和接收者进行解耦,其本质是分离职责,动态组合
传递职责
核心概念
- Handler 定义职责的接口
- ConcreteHandler 实现职责的类
1 | public abstract class Handler { |
优缺点
优点
- 请求者和接收者松散耦合
- 动态组合职责
缺点
- 产生很多细粒度的对象
- 不一定能被处理
使用场景
- 多个对象可以处理同一个请求,但是具体由哪个对象处理该请求,是运行时动态决定的
- 想在不明确指定接收者的情况下,向多个对象中的其中一个提交请求
- 想要动态指定处理一个请求的对象集合
如servlet中的过滤器链FilterChain