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版权协议,转载请附上原文出处链接和本声明。