一、建抽象类
public abstract class Handler {
private Handler next;
public Handler getNext() {
return next;
}
public Handler setNext(Handler next) {
this.next = next;
return this;
}
public abstract void handle(int days);
}
二、建子类
public class TeamLeader extends Handler{
@Override
public void handle(int day) {
System.out.println("小组长:同意请假申请!");
if(day>7) {
getNext().handle(day);
}
}
}
public class PM extends Handler{
@Override
public void handle(int days) {
System.out.println("项目经理:请假申请通过!");
if(days>10) {
getNext().handle(days);
}
}
}
public class Leader extends Handler {
@Override
public void handle(int days) {
System.out.println("总经理:批准了请假申请!");
}
}
三、测试类
public class Test {
public static void main(String[] args) {
Handler handler = new TeamLeader().setNext(new PM().setNext(new Leader()));
System.out.println("请假五天需要请示的人:");
handler.handle(5);
System.out.println("--------------------");
System.out.println("请假八天需要请示的人:");
handler.handle(8);
System.out.println("--------------------");
System.out.println("请假十天需要请示的人:");
handler.handle(11);
}
}
四、运行结果