责任链模式

package ChainOfResponsibility;

/**
 * @Author Liuyunda
 * @Date 2021/6/21 14:33
 * @Email man021436@163.com
 * @Description: 责任链模式 请假审批:班主任->教导主任->校长
 * 请假天数不超过2天 由班主任审批,超过两天并且不超过一个月由教导主任审批,大于一个月由校长审批
 */
// 领导类
abstract class Leader {
    private Leader meLeader;

    public Leader getMeLeader() {
        return meLeader;
    }

    public void setMeLeader(Leader meLeader) {
        this.meLeader = meLeader;
    }
    public abstract void handler(Integer num);
}
// 班主任
class ClassTeacher extends Leader{
    @Override
    public void handler(Integer num) {
        // 判断请假天数
        if (num <= 2) {
            System.out.println("班主任:我批准了你回家吧,请假天数:"+num);
        } else {
            System.out.println("班主任:请假时间太长我没权限批,我给你找主任吧");
            this.getMeLeader().handler(num);
        }
    }
}
// 教导主任
class Director extends Leader{
    @Override
    public void handler(Integer num) {
        // 判断请假天数
        if (num>2 && num <= 28){
            System.out.println("教导主任:我批准了你回家吧,请假天数:"+num);
        }else {
            System.out.println("教导主任:请假时间太长我没权限批,我给你找校长吧");
            this.getMeLeader().handler(num);
        }
    }
}
// 校长
class Principal extends Leader{
    @Override
    public void handler(Integer num) {
        // 判断请假天数
        if (num > 28){
            System.out.println("校长:我批准了你回家吧,请假天数:"+num);
        }
    }
}
public class ChainOfResponsibilityDemo {
    public static void main(String[] args) {
        ClassTeacher classTeacher = new ClassTeacher();
        Director director = new Director();
        Principal principal = new Principal();
        classTeacher.setMeLeader(director);
        director.setMeLeader(principal);
        classTeacher.handler(100);
    }
}

在这里插入图片描述


版权声明:本文为qq_39124699原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。