JavaScript职责链模式

/**
 * 职责链模式,请求在对象之间传递,避免请求的发送者与接收者的耦合关系
 */
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: '小明'});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值