设计模式之责任链模式---小白篇

43 阅读1分钟

我正在参加「码上掘金挑战赛」详情请看:码上掘金挑战赛来了!


设计模式之责任链模式---小白篇

1、什么是责任链模式?

责任链模式其实就是将多个处理器串成一个链,每个处理器都有机会去处理,而请求端不需要知道具体发送到哪个处理器!


2、责任链模式的优缺点有哪些?

优点

  • 请求端与处理端解耦,请求端无需知道具体是哪个处理器处理
  • 提高代码的灵活性,可以灵活的添加或者更正处理器

缺点

  • 如果无效链子很长,会影响性能

3、责任链模式的应用场景有哪些?

主要应用于一些链式场景,比如说Spring 拦截器的前置方法,后置方法,再比如Spring Aop 的 前置通知、环绕通知、后置通知等等,或者请假审批流程,小于3天的经理批准,大于3天的老板批准!

我们就举一个简单的请假审批案例,来看看代码怎么写

处理器抽象类

public abstract class Handler {
    protected Handler nextHandler;

    public void setNextHandler(Handler nextHandler) {
        this.nextHandler = nextHandler;
    }

    public abstract void process(int num);
}

领导处理器

public class LeaderHandler extends Handler{

    @Override
    public void process(int num) {
        if (num <= 3) {
            System.out.println("Leader 审批!");
        }else {
            nextHandler.process(num);
        }
    }
}

Boss处理器

public class BossHandler extends Handler{

    @Override
    public void process(int num) {
        System.out.println("Boss 处理!");
    }
}

把处理器串成链 测试

public class Demo {
    public static void main(String[] args) {
        LeaderHandler leaderHandler = new LeaderHandler();
        BossHandler bossHandler = new BossHandler();
        leaderHandler.setNextHandler(bossHandler);

        leaderHandler.process(2);
        leaderHandler.process(5);

    }
}

感谢大家的阅读,我是Alson_Code,一个喜欢把简单问题复杂化,把复杂问题简单化的程序猿! ❤