小强出差回来,向领导报销,但是他的直接领导的权限只在1000以内,所以他的直系领导直接找到老板。
领导抽象类,由具体的各级领导实现
//领导抽象类 public abstract class Leader { public Leader nextHandle; //上一级领导处理者 /*** * 处理报帐请求 * @param money * */ public final void handleRequest(int money){ if (money<=limit()){ handle(money); }else { if (null != nextHandle){ nextHandle.handleRequest(money); } } } /** * 领导自身能批复的额度,和权限 * */ public abstract int limit(); /** * 处理报帐行为 * */ public abstract void handle(int money); }
这块总共设计到两位领导
直系领导
public class GroupLeader extends Leader { //组长能够批阅的范围 @Override public int limit() { return 1000; } @Override public void handle(int money) { Log.d("groupleader","批阅"+money+"成功"); } }
Boss
public class Boss extends Leader { @Override public int limit() { return Integer.MAX_VALUE; } @Override public void handle(int money) { Log.d("boss","批阅"+money+"成功"); } }
具体实现方法
GroupLeader groupLeader = new GroupLeader(); Boss boss = new Boss(); //当直系领导没有权限,向上级继续申报 groupLeader.nextHandle = boss; groupLeader.handleRequest(5000);