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


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

    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);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    领导处理器

    public class LeaderHandler extends Handler{
    
        @Override
        public void process(int num) {
            if (num <= 3) {
                System.out.println("Leader 审批!");
            }else {
                nextHandler.process(num);
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    Boss处理器

    public class BossHandler extends Handler{
    
        @Override
        public void process(int num) {
            System.out.println("Boss 处理!");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    串成链测试

    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);
    
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

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

  • 相关阅读:
    Windows网络服务综测刷题
    相机坐标系
    加密的艺术:密文的创建和校验
    CSS 实现音频loding动画
    SDS-redis动态字符串
    windows安装mysql
    20230830工作心得:巧用标记位和For循环遍历
    【2023/10/16 下午10:32:39】
    杰理之增加自动mute处理节点【篇】
    Pytorch入门实例的分解写法
  • 原文地址:https://blog.csdn.net/weixin_42415173/article/details/126713272