责任链
责任链模式就是为请求创建一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。属于行为型模式。
每个接收者都包含下一个接收者的引用,如果该接收者不能处理该请求,那么就把该请求传递到下一个接收者。
优点
- 降低耦合度,将请求的发送者和接收者解耦。
- 简化了对象,使得对象不需要知道链的结构。
- 增强了给对象指派职责的灵活性,通过改变链内的成员或者调动它们的次序,允许动态的新增或者删除责任。
- 增加新的请求处理类变得很简单。
缺点
- 不能保证请求一定被接收。(可能所有的处理者都处理不了这个请求)
- 系统的性能将受到一定影响,而且在进行代码调试的时候会很麻烦。(比如,处理链有10个处理者,这个请求只能被最后一个处理者处理,但该请求还是要经过前面9个处理者)
- 可能不容易观察运行时的特征,有碍于除错。
使用场景
- 有多个对象可以处理同一个请求,具体哪个对象处理该请求由运行时刻自动决定。
- 在不明确指定接收者的情况下,向多个对象中的一个提交请求。
- 可动态指定一组对象处理请求。
类图

声明一个抽象类Logger,在Logger中声明一个抽象方法write。然后声明4个继承Logger的类,并实现write方法。
1 | DebugLogger debugLogger = new DebugLogger(1); |