class Leader {
constructor() {}
approval() {
throw new Error('抽象方法不能直接使用');
}
next(nextLeader) {
this.nextLeader = nextLeader;
}
}
class Teacher extends Leader {
approval(days, person) {
if(days < 5) {
console.log(`请假人:${person.name},请假:${days}天, 老师已审批`);
} else {
return this.nextLeader.approval(days, person);
}
}
}
class Headmaster extends Leader {
approval(days, person) {
if(5 <= days && days < 10) {
console.log(`请假人:${person.name}, 请假:${days}天, 校长已审批`);
} else {
console.log('审批未通过,明天叫家长过来');
}
}
}
var teacher = new Teacher();
var headmaster = new Headmaster();
teacher.next(headmaster);
teacher.approval(2, { name: '小红'});
teacher.approval(5, { name: '小朱'});
teacher.approval(10, { name: '小明'});