美文网首页
设计模式之职责链模式

设计模式之职责链模式

作者: kwbsky | 来源:发表于2019-12-12 11:51 被阅读0次
定义

职责链模式(Chain of Responsibility Pattern):避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。职责链模式是一种对象行为型模式。

代码演示
class Requset{

    }

class Handler1 implements Handler{
        private Handler mHandler;

        public Handler1(Handler handler){
            this.mHandler = handler;
        }

        @Override
        public void handle(Requset requset) {
            if (needHandle){
                Log.e(TAG, "handle1");
            }else {
                mHandler.handle(requset);
            }
        }
    }

    class Handler2 implements Handler{
        private Handler mHandler;

        public Handler2(Handler handler){
            this.mHandler = handler;
        }

        @Override
        public void handle(Requset requset) {
            if (needHandle){
                Log.e(TAG, "handle2");
            }else {
                mHandler.handle(requset);
            }
        }
    }

    class Handler3 implements Handler{

        @Override
        public void handle(Requset requset) {
            Log.e(TAG, "handle3");
        }
    }

     public void handle(){
        Handler handler3 = new Handler3();
        Handler handler2 = new Handler2(handler3);
        Handler handler1 = new Handler1(handler2);
        handler1.handle(new Requset());
     }

handler1 持有handler2,handler2 又持有handler3。Request是具体处理时需要用到的参数,也可没有。一旦handler1开始处理,那么如果条件允许,就会传递给handler2,再传递给handler3,就像链条一样。相当于把多个处理逻辑分别放到了不同的handler中,将他们解耦。如果需要增加处理逻辑,只需要新建handler的子类。

实际运用

android的事件分发就是典型的职责链模式。每个view都是handler,从顶级view开始传递,内部逻辑判断后如果需要处理就调用onTouchEvent,如果不需要处理就传递下去。
okhttp把http请求的各个步骤分别封装进了不同的拦截器。但是他不是标准的职责链模式,每个拦截器都会去处理。为了把拦截器串起来,他增加了一个类叫chain,chain持有了所有的拦截器和下一个需要执行的拦截器索引,并调用intecept方法把处理传递下去。

职责链模式把不同的处理逻辑封装到不同的类中,并把是否处理的逻辑也分发到具体类中。特别需要注意,他是按照既定的顺序执行下来的,所以特别适合需要按照顺序通过判断进行处理的情况。

相关文章

  • 设计模式-工具链模式和迭代器模式

    设计模式-职责链模式和迭代器模式 1.职责链模式 设计动机客户端发出一个请求,职责链上的对象都可以处理这一请求,而...

  • 设计模式之职责链模式

    在业务开发中,为了处理某个属性,可能需要复杂的处理逻辑,才能得到,一般的做法是按步骤处理,最终得到想要的结果。作者...

  • 设计模式之职责链模式

    职责链模式 责任链模式是一种设计模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求...

  • 设计模式之职责链模式

    定义 职责链模式(Chain of Responsibility Pattern):避免请求发送者与接收者耦合在...

  • 设计模式之职责链模式

    职责链模式使得多个对象都有机会处理请求,将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。结...

  • 设计模式之职责链模式

    定义 职责链模式(Chain of responsibility)是使多个对象都有机会处理请求,从而避免请求的发送...

  • iOS面试之设计模式模块

    设计模式 设计模式内容如下: 责任链模式 桥接模式 命令模式 适配器模式 单例模式 等等 设计原则 单一职责原则 ...

  • Typescript 职责链模式(Chain of Respon

    标签: 前端 设计模式 职责链模式 typescript Chain of Responsibility 请仔细阅...

  • 设计模式值职责链模式(行为型)

    [TOC] 一、行为型模式 介绍职责链模式之前先介绍一下行为型设计模式,因为按照GoF模式分类,职责链就是一种行为...

  • Java设计模式系列-责任链模式

    原创文章,转载请标注出处:《Java设计模式系列-责任链模式》 一、概述 职责链模式(称责任链模式)将请求的处理对...

网友评论

      本文标题:设计模式之职责链模式

      本文链接:https://www.haomeiwen.com/subject/gclagctx.html