Technology-设计模式-责任链模式

本文介绍了GoF中的责任链模式。

模式推演

GUI中的点击响应:

例如iOS系统,用户点击了屏幕,iOS将点击事件传递给App的窗口UIWindow,UIWindow再将其分发给当前的ViewController,ViewController再将其分发给RootView,RootView再继续一层层分发下去,当有一个View,例如Button,响应了这个事件时,则不再分发。

下面的邮件处理系统也是,一层层分发:

Technology-DesignPattern-ChainOfResponsibility-Request

定义

责任链模式(Chain of Reponsibility Pattern):让一个以上的对象有机会能够处理某个请求。

类图:

Technology-DesignPattern-ChainOfResponsibility-Class

用途:

  • 经常被使用在窗口系统中,处理鼠标和键盘之类的事件。

优点:

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

缺点:

  • 并不保证请求一定会被执行,如果没有任何对象处理它的话,它可能或落到链尾端之外;
  • 可能不容易观察运行时的特征,有碍于除错。