/**
* 职责链模式,请求在对象之间传递,避免请求的发送者与接收者的耦合关系
*/
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下一责任链
teacher.next(headmaster);
teacher.approval(2, { name: '小红'});
teacher.approval(5, { name: '小朱'});
teacher.approval(10, { name: '小明'});
JavaScript职责链模式
最新推荐文章于 2022-07-28 12:00:00 发布