• 行为型模式-责任链模式


    参考:https://www.jianshu.com/p/7fa31c57cbb5

    1.定义

    一个请求沿着一条“链”传递,直到该“链”上的某个处理者处理它为止。

    2.介绍

    • 责任链模式属于行为型模式。
    • 多个对象中,每个对象都持有下一个对象的引用,这就构成了链这种结构。
    • 一个请求通过链的头部,一直往下传递到链上的每一个结点,直到有某个结点对这个请求做出处理为止,这就是责任链模式。
    • 责任链模式一般分为处理者与请求者。具体的处理者分别处理请求者的行为。

    3.UML类图

    角色说明:
    • Handler(抽象处理者):抽象类或者接口,定义处理请求的方法以及持有下一个Handler的引用.
    • ConcreteHandler1,ConcreteHandler2(具体处理者):实现抽象处理类,对请求进行处理,如果不处理则转发给下一个处理者.
    • Client (客户端):即要使用责任链模式的地方。

    4.实现

    以送快递为例,单个快递员只负责某个片区的快递,若某个快递目的地不属于当前的片区,则交给下一个快递员来处理,直到有人处理为止。

    5. 应用场景

    • 多个对象处理同一请求时,但是具体由哪个对象去处理需要运行时做判断。
    • 具体处理者不明确的情况下,向这组对象提交了一个请求。

    6. 优点

    • 代码的解耦,请求者与处理者的隔离分开。
    • 易于扩展,新增处理者往链上加结点即可。

    7. 缺点

    • 责任链过长的话,或者链上的结点判断处理时间太长的话会影响性能,特别是递归循环的时候。
    • 请求有可能遍历完链都得不到处理。

    8. Android中的源码分析

    • Android中的事件分发机制就是类似于责任链模式。
    • 另外,OKhttp中对请求的处理也是用到了责任链模式,有兴趣的可以去看下OKhttp的源码。后面有时间也会对OKhttp的源码进行分析。
  • 相关阅读:
    mysql日期默认值格式('0000-00-00')错误解决
    休闲一下-精华-IMDB评分8分左右影片400多部!
    开机动画流程
    SystemServer启动服务
    理解Android进程创建流程
    android开机动画启动流程
    Android系统的启动优化
    Android 系统启动(init,zygote)
    Zygote
    init
  • 原文地址:https://www.cnblogs.com/suiyilaile/p/10143356.html
Copyright © 2020-2023  润新知