责任链模式

Catalogue   

定义

免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。

类图

角色

  • 抽象处理者(Handler)角色:声明了所有具体处理者的通用接口。 该接口通常仅包含单个方法用于请求处理, 但有时其还会包含一个设置链上下个处理者的方法。

  • 具体处理者(ConcreteHandler)角色:具体处理者接到请求后,可以选择将请求处理掉,或者将请求传给下家。

优缺点

  • 单一职责原则。
  • 开闭原则。可以在不更改现有代码的情况下在程序中新增处理者。

使用场景

  • OkHttp框架中,分析参考OkHttp
  • GUI中的事件流,某个view如果要处理就会进行拦截,如果不处理,则传给后续的view。

参考