美文网首页
订阅发布模式/观察者模式

订阅发布模式/观察者模式

作者: 练习时长2年半的个人练习生 | 来源:发表于2020-05-18 21:49 被阅读0次
    定义
    • 观察者模式指的是一个对象(Subject)维持一系列依赖于它的对象(Observer),当有关状态发生变更时 Subject 对象会通知一系列 Observer 对象进行更新。

    手写一个订阅发布模式

       class Event {
          constructor() {
             this.listener = {}
          }
          on() {
             let key = Array.prototype.shift.apply(arguments)
             let fns = arguments
             if (key in this.listener) {
                this.listener[key].push(fns[0])
                return
             }
             this.listener[key] = [fns[0]]
          }
    
          emit() {
             let key = Array.prototype.shift.apply(arguments);
             console.log(this.listener[key])
             for (let cd of this.listener[key]) {
                cd()
             }
          }
       }
    
       let event = new Event()
       let f1 = function () {
          console.log('点击了')
       }
       let f2 = function () {
          console.log('点击了22222')
       }
       event.on('click')
    
       event.on('click')
       event.emit('click')
    

    click 事件有两个订阅者(f1,f2),当emit后,两个订阅者得到通知。
    这就是最简单发布/订阅模式。

    • nodeJs的事件订阅发布/事件驱动
    const Event = require('events')
    let event = new Event.EventEmitter();
    function dirtyTalk(name){
       console.log(`${name},oh,yes,oh,Yes!`)
    }
    event.on('fuck',dirtyTalk)
    
    setTimeout(function() { 
       event.emit('fuck','jack');   
    }, 1000); 
    

    相关文章

      网友评论

          本文标题:订阅发布模式/观察者模式

          本文链接:https://www.haomeiwen.com/subject/lozpohtx.html