责任链模式初探

1.需求
现在有一个需求是假设你是新入职的员工,你要申请3000块钱去购买办公设备!这样的可能需要去找公司的领导做采购前的报备。这其中不同的金额你肯定是找不同的权限人去,比如你的组长leader级别是只能报销1000元的,超过1000元就得去找部门经理,依次往上找。最后到老板不给报。。。。😁

2、代码思路
好多刚入门的哥们上来就是一句这还不简单:
😓if/else 啊,如果不行我就else if。。。。。
我他妈头给你打歪,下一个接手您老人家的代码只能是屎上雕花了
言归正传,首先是定义接口,形成完整的链路的规范,我的思路是这样的
1、定义处理本级别的处理方法
2、定义一个方法注入下一个处理器
废话不多说,上代码

一、定义接口

public interface BuyAskHandler {
    void nextHandler(BuyAskHandler buyAskHandler);
    Boolean handler(int money);
}

2、各个处理层
leader

public class Leader implements BuyAskHandler {

    public BuyAskHandler buyAskHandler;

    @Override
    public void nextHandler(BuyAskHandler buyAskHandler) {
        this.buyAskHandler= buyAskHandler;
    }

    @Override
    public Boolean handler(int money) {
        if (money < 1000){
            System.out.println("我的能力是处理1000元一下的权限");
            return true;
        }
        System.out.println("权限不够,去找部门经理把!");
       return buyAskHandler.handler(money);
    }
}

manager

public class manager implements BuyAskHandler {
    public BuyAskHandler buyAskHandler;

    @Override
    public void nextHandler(BuyAskHandler buyAskHandler) {
        this.buyAskHandler= buyAskHandler;
    }

    @Override
    public Boolean handler(int money) {
        if (money < 3000){
            System.out.println("我的能力是处理3000元一下的权限");
            return true;
        }
        System.out.println("权限不够,你去问问老板把!");
         return buyAskHandler.handler(money);
    }
}

boss

public class Boss implements BuyAskHandler {
    public BuyAskHandler buyAskHandler;

    @Override
    public void nextHandler(BuyAskHandler buyAskHandler) {
        this.buyAskHandler= buyAskHandler;
    }

    @Override
    public Boolean handler(int money) {
        if (money < 5000){
            System.out.println("快去买吧!");
            return true;
        }
        System.out.println("小伙子,我可是小资本,不同意!");
        return false;
    }
}

测试方法

    public static void main(String[] args) {
        Leader leader = new Leader();
        manager manager = new manager();
        Boss boss = new Boss();
        leader.nextHandler(manager);
        manager.nextHandler(boss);
        leader.handler(100001);
    }

结果

权限不够,去找部门经理把!
权限不够,你去问问老板把!
小伙子,我可是小资本,不同意!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值