public class ChainDesignerPattern {
public static void main(String[] args) {
Person teacher = new Teacher();
Person director = new Director();
Person master = new Master();
teacher.setNext(director);
director.setNext(master);
teacher.handler(3);
}
}
abstract class Person {
private Person next;
public abstract void handler(int days);
public Person getNext() {
return next;
}
public void setNext(Person next) {
this.next = next;
}
}
class Teacher extends Person {
@Override
public void handler(int days) {
if (days<0) {
throw new IllegalArgumentException("无效参数");
} else if (days<=7) {
System.out.println("班主任批假");
} else {
super.getNext().handler(days);
}
}
}
class Director extends Person {
@Override
public void handler(int days) {
if (days<=30) {
System.out.println("系主任批假");
} else {
super.getNext().handler(days);
}
}
}
class Master extends Person {
@Override
public void handler(int days) {
System.out.println("校长批假");
}
}