设计模式——责任链(Chain of Responsibility)

责任链模式 为 设计模式的 行为型模式的一种.

#责任链最常见的举例是 申请费用:

程序猿 申请出差费用 (由于各位领导的审批额度有限,需要逐层审批):小组长—>项目经理—>部门经理—>Boss(小组长发现额度过大,小组长向项目经理申请,项目经理发现数额过大,项目经理向上申请(所以程序猿并不知道最终是谁处理的,最终那位领导可能也不知道具体是谁申请的——解耦))

这里写图片描述

这里的程序猿就是Client(Requester请求者),各级领导就是ConcreteHandler(处理者)。Handler 为处理者的抽象类。

#使用场景:

  1. Android源码中的实现就是事件分发,父控件将事件逐层分发给子控件。
  2. Tomcat中的Filter就是使用了责任链模式。

#总结:

  • 其实就是入口处理器处理一个请求,然后入口处理器由于某者原因使用其他兄弟处理器来处理这个请求, 这种让其他处理器来处理这个请求的次数顺序(链、树、环)为N,那么这种模式称之为责任链模式。
  • 这里处理器调用的处理器为其本身拥有的。
  • 这种模式其实是由于某种未知情况,处理器需要借助其他处理器来处理相应请求。其实就是处理器自己不能处理的问题,主动转交问题,问题的传递处理
  • 就一句:问题的传递处理

#参考资料:

Android设计模式源码解析之责任链模式
《JAVA与模式》之责任链模式

猜你喜欢

转载自blog.csdn.net/yuanyang5917/article/details/52370810
今日推荐