• JAVA中的责任链模式(CH01)



    责任链模式的关键在于每一个任务处理者都必须持有下一个任务处理者的作用

    纯的责任链:纯的责任链是只能也必须只有一个任务处理者去处理这个任务,

              不会出现没有处理者处理的情况,也不会出现有多个处理者处理同一个任务

    不纯的责任链:可以有多个任务处理者同时处理一个任务,那么就表示这个任务是大家一起共享的,或者也可以没有任何处理这去处理他

    责任链:

    这是一个简单的经费申请责任链。

    客户端发请求申请经费,

    申请经费从最小权限范围开始申请,如果权限不足则向上一级申请。

    1:定义一个抽象类(AbstractHandler),抽象申请经费方法.

    2:定义三个子类,继承 AbstractHandler 父类,实现抽象方法 execute(int money);

    1:这个抽象定义自己本身,然后赋予get&set方法;

    public abstract class AbstractHandler {
        
        //定义自己,给get&set方法
        private AbstractHandler handler;
    
        public AbstractHandler getHandler() {
            return handler;
        }
    
        public void setHandler(AbstractHandler handler) {
            this.handler = handler;
        }
    
        //抽象申请经费方法
        public abstract void execute(int money);
    }
    

    2:第一个子类,申请经费范围在小于或定于200内,

         做出判断,如果不在范围内,从新调用execute方法,

         此时的execute是下一级审批官的方法了在后面客户端main方法里面可以设置

    a) money<=200

    public class HandlerA extends AbstractHandler {
    
        @Override
        public void execute(int money) {
            if(money<=200){
                System.out.println("A审核通过…………");
            }else{
                getHandler().execute(money);
            }
        }
    }
    

     b) money<=500

    public class HandlerB extends AbstractHandler {
        @Override
        public void execute(int money) {
            if(money<=500){
                System.out.println("B审核可以通过…………");
            }else{
                getHandler().execute(money);
            }
        }
    }
    

     c) money<=1000

         此时为最高一级

    public class HandlerC extends AbstractHandler {
        @Override
        public void execute(int money) {
            if(money<=1000){
                System.out.println("C审核通过…………");
            }else{
                System.out.println("审超出预算");
            }
        }
    }
    

      

      客户端

    public class Main {
        public static void main(String[] args) {
          //实现三个不同级别权限的子类
            AbstractHandler A = new HandlerA();
            AbstractHandler B = new HandlerB();
            AbstractHandler C = new HandlerC();
         //给子类赋予下一个对应的级别 A.setHandler(B); B.setHandler(C); A.execute(300); } }

     输出结果为:A审核通过…………

    后记:虽然发现很容易就完成了责任链,但是发现代码并不如意,耦合太高,后续一篇会对此进行优化

  • 相关阅读:
    别人直播带货,李彦宏却想直播带“知识”
    什么能毁掉程序员的一生?
    如何清爽的安排日常?
    优秀的程序员真的不写注释吗?
    淘宝内测Bug风波:惹谁别惹程序员
    如果员工都不快乐,还谈什么绩效增长
    前端有架构吗?
    [转]BDC’s and CTR’s
    SAP data migration: Change vendor account group
    [转]abap程序设计方法
  • 原文地址:https://www.cnblogs.com/javaLin/p/7883494.html
Copyright © 2020-2023  润新知