责任链模式

Posted by 程序亦非猿 on 2016-08-01

设计模式专题系列: 设计模式

责任链模式

当你想要让一个以上的对象有机会能够处理某个请求的时候,就使用责任链模式.

通过责任链模式,可以为某个请求创建一个对象链.每个对象依序检查此请求,并对其进行处理,或者将它传给链中的下一个对象.

拿Android来说,View的 onTouch 等方法都是使用了责任链模式.

用途:

经常被使用在窗口系统中,处理鼠标和键盘之类的事件(在Android的触摸事件分发)

优点:

  1. 将请求的发送者和接受者解耦
  2. 可以简化你的对象,因为它不需要知道链的结构
  3. 通过改变链内的成员或调动它们的次序,允许你动态地新增或者删除责任

缺点:

  1. 并不保证请求一定会被执行,如果没有任何对象处理它的话,它可能会落到链尾端之外(这可以是优点也可以是缺点)
  2. 可能不容易观察运行时的特征,有碍于排除错误