1 抽象领导
/**
* 处理报账的 抽象领导
*/
public abstract class Leader {
Leader nextLeader;//上级领导
//处理报账申请
public void handleRequest(int money) {
if (money <= limit()){
handle(money);
}else {
if (null != nextLeader){
nextLeader.handleRequest(money);
}
}
}
//能批复额度
public abstract int limit();
//处理报账
public abstract void handle(int money);
}
2 组长
/**
* 组长
*/
public class GroupLeader extends Leader {
@Override
public int limit() {
return 1000;
}
@Override
public void handle(int money) {
Log.i("**","组长批复"+money+"元");
}
}
3 主管
/**
* 主管
*/
public class Director extends Leader {
@Override
public int limit() {
return 5000;
}
@Override
public void handle(int money) {
Log.i("**","主管批复"+money+"元");
}
}
4 老板
/**
* 老板
*/
public class Boss extends Leader {
@Override
public int limit() {
return 1000000;
}
@Override
public void handle(int money) {
Log.i("**","老板批复"+money+"元");
}
}
5 工人发起报账
/**
* 工人向组长申请报账
*/
public class Worker {
public void request(int money){
GroupLeader groupLeader = new GroupLeader();//组长
Director director = new Director();//主管
Boss boss = new Boss();//老板
groupLeader.nextLeader = director;
director.nextLeader = boss;
//向组长申请报账
groupLeader.handleRequest(money);
}
}