• 发布订阅者模式、观察者模式总结


    /**
    * 观察者模式定义:Subject维持一系列它的对象Observer,当有关状态发生变更时Subject对象则会通知一系列Observer对象进行更新。
    * 在Subject对象添加了一系列Observer对象之后,Subject维持一系列Observer对象,当有关状态发生变更时Subject对象则会通知这
    * 一系列Observer对象进行更新
    * splice讲解(当前的索引,截取的个数,增加的数字)
    * @param 1个参数
    * @patam 2个参数
    * @param 3个参数
    */
    function Subject() {
    this.observers = [];
    }
    Subject.prototype = {
    add: function (observer) {
    this.observers.push(observer);
    },
    remove: function (observer) {
    var observers = this.prototype;
    for (var i = 0; i < observers.length; i++) {
    if (observers[i] === observer) {
    this.observers.splice(i, 1)
    }
    }
    },
    notify: function () {
    var observers = this.observers;
    for (var i = 0; i < observers.length; i++) {
    observers[i].notify();
    }
    }
    }

    var sub = new Subject();
    var obs1 = new Observer('t1');
    var obs2 = new Observer('t2');
    Observer.prototype = {
    update: function () {
    console.log('my name is' + this.name);
    }
    }
    sub.add(obs1);
    sub.add(obs2);
    sub.notify();
    /**
    * 发布订阅模式指的是希望接收通知的对象(Subscriber)基于一个主题通过自定义事件订阅主题,被激活事件的对象(Publisher)通过发布主题事件的方式通知各个订阅该主题的 Subscriber 对象。
    *
    */
    let pubSub = {
    list: {},
    // 订阅
    subscribe: function (key, fn) {
    if (!this.list[key]) {
    this.list[key] = [];
    };
    this.list[key].push(fn);
    },
    // 发布
    publish: function () {
    let arg = arguments;
    let key = [].shift.call(arg);
    let fns = this.list(key);
    if (!fns || fns.length <= 0) return;
    for (var i = 0; i < fns.length; i++) {
    fns[i].apply(this, arg);
    }
    },
    // 取消订阅
    unSubscribe: function (key) {
    delete this.list[key];
    }
    }
    pubSub.subscribe('name', (name) => {
    console.log('your name is' + name);
    })
  • 相关阅读:
    python操作word
    python安装pyautogui时遇到Pillow问题
    python中弹出消息框--MessageBox( pywin32)
    python 正则匹配汉字、简单读写、打开txt文件
    安装node(淘宝镜像)+Vue-cli+element-ui逐步搭建开发环境
    MT【317】两次判别式
    MT【316】常数变易法
    MT【315】勾股数
    MT【314】正切比值
    MT【313】特征方程逆用
  • 原文地址:https://www.cnblogs.com/yayaxuping/p/9911024.html
Copyright © 2020-2023  润新知