java责任链设计模式训练

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34272093/article/details/86520774

小强出差回来,向领导报销,但是他的直接领导的权限只在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);

猜你喜欢

转载自blog.csdn.net/qq_34272093/article/details/86520774