观察者模式
class Subject { constructor() { this.Observers = []; this.curnum = 1; this.subnum = 1; } sub(observer) { observer.pnum = this.subnum; this.Observers.push(observer); this.subnum++; } notify() { this.Observers.forEach(observer => { observer.listen(this.curnum); }); this.curnum++; } } const subject = new Subject(); const ObserverA = { listen(num) { if (num === this.pnum) { console.log('轮到我了'); } else if (num < this.pnum) { console.log(`前面还有${this.pnum - num}`); } }, }; const ObserverB = { listen(num) { if (num === this.pnum) { console.log('轮到我了'); } else if (num < this.pnum) { console.log(`前面还有${this.pnum - num}`); } }, }; const ObserverC = { listen(num) { if (num === this.pnum) { console.log('轮到我了'); } else if (num < this.pnum) { console.log(`前面还有${this.pnum - num}`); } }, }; subject.sub(ObserverA); subject.sub(ObserverB); subject.sub(ObserverC); subject.notify(); subject.notify(); subject.notify();
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步