发布订阅模式

71 阅读1分钟

发布订阅模式是一种一对多的对象对应关系,多个观察者同时监听某一个对象,当该对象发生改变时,就会执行一个发布事件,这个发布事件会通知所有的事件订阅者,事件订阅者根据得到的数据进而改变自己的状态。

一个完整的发布订阅模式,由发布者、订阅者和消息管理器组成。

obseverWatcher.png

示例

// 定义发布订阅对象
            class PublishSubscribe {
                constructor () {
                    // 存放订阅者回调函数
                    this.lists = [];
                }
                // 添加订阅者回调函数
                addWatcherCallback (fn) {
                    this.lists.push(fn);
                }
                // 执行订阅者回调函数
                executeWatcherCallback () {
                    for (let i = 0; i < this.lists.length; i++) {
                        //将参数应用于每一个回调函数
                        this.lists[i].apply(this, arguments);
                    }
                }
            }
            // 创建一个发布者实例
            let ps = new PublishSubscribe();
            // 订阅数据1
            ps.addWatcherCallback(function(name, age) {
                console.log('我的名字:', name);
                console.log('我的年龄:', age);
            });
            // 订阅数据2
            ps.addWatcherCallback(function(name, age) {
                console.log('他的名字:', name);
                console.log('他的年龄:', age);
            });

            // 发布消息
            ps.executeWatcherCallback('张三', 100);