设计模式专题系列: 设计模式
责任链模式
当你想要让一个以上的对象有机会能够处理某个请求的时候,就使用责任链模式.
通过责任链模式,可以为某个请求创建一个对象链.每个对象依序检查此请求,并对其进行处理,或者将它传给链中的下一个对象.
拿Android来说,View的 onTouch 等方法都是使用了责任链模式.
用途:
经常被使用在窗口系统中,处理鼠标和键盘之类的事件(在Android的触摸事件分发)
优点:
- 将请求的发送者和接受者解耦
- 可以简化你的对象,因为它不需要知道链的结构
- 通过改变链内的成员或调动它们的次序,允许你动态地新增或者删除责任
缺点:
- 并不保证请求一定会被执行,如果没有任何对象处理它的话,它可能会落到链尾端之外(这可以是优点也可以是缺点)
- 可能不容易观察运行时的特征,有碍于排除错误