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);
}
结果
权限不够,去找部门经理把!
权限不够,你去问问老板把!
小伙子,我可是小资本,不同意!