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

发布订阅者模式

作者: 菜鸟切图仔 | 来源:发表于2019-02-27 23:34 被阅读0次

简单实现

        var publish = {} // 发布者对象
        publish.clientList = []; // 存放订阅者回调函数缓存列表

        publish.listen = function (fn) {
            this.clientList.push(fn);
        }

        publish.trigger = function () { // 发布消息
            publish.clientList.map(item=> {
                item.apply(this, arguments);
            });
        }

        //=======================测试=============================
        publish.listen(function (message) {
           alert(message);
        });

        publish.trigger("这是一条消息"); // 这是一条消息

缺点:发布者发布消息无差别发送,没有订阅该消息的订阅者也会受到该消息
解决办法:增加标识key值,只订阅自己感兴趣的消息。

代码示例

 var publish = {};
        publish.clientList = {} // 缓存列表,存放订阅者的回调函数

        publish.listen = function (key, fn) {
            if (!this.clientList[key]) { // 如果还没有订阅过此类消息,给该类消息创建一个缓存列表
                this.clientList[key] = [];
            }
            this.clientList[key].push(fn);
        }

        publish.trigger = function () {
            var key = Array.prototype.shift.call(arguments); // 取出key值
            var fns = this.clientList[key]; //取出订阅者回调函数
            if (!fns || fns.lenght === 0) {
                return false; //没有订阅,则不做任何操作
            }
            fns.map((item)=>{
                item.apply(this,arguments);
            })
        }

        // =======================测试======================
        var obj = {
            name: '小黑不黑',
            age: 20
        };

        publish.listen('orderer',  (obj)=> {
            console.log(obj);
        });

        publish.trigger("orderer", obj);

通用的发布订阅者模式

相关文章

  • 设计模式之发布订阅模式(1) 一文搞懂发布订阅模式

    目录 发布/订阅者模式的优点 实现发布/订阅者模式需要考虑的点 何时应使用发布/订阅者模式 发布/订阅者模式与观察...

  • 发布订阅模式(观察者模式)

    发布订阅模式(观察者模式) 发布订阅也叫观察者模式 发布 && 订阅 使用

  • JS-简单实现发布订阅模式

    发布订阅模式主要涉及三个对象:发布者、订阅者、主题对象。 发布-订阅模式 定义  发布-订阅模式又称观察者模式,它...

  • Redis发布订阅

    发布订阅 Redis提供了基于“发布/订阅”模式的消息机制,此种模式下,消息发布 者和订阅者不进行直接通信,发布者...

  • 观察者模式、promise基础

    1.观察者模式 发布订阅 promise redux eventBus 观察者模式(基于发布订阅的) 发布 ...

  • 观察者模式

    精髓: 观察者模式其实就是发布订阅模式,发布者发布信息,订阅者获取信息,订阅了就能收到信息,没订阅就收不到信息。 ...

  • Vue响应式原理——初体验

    发布-订阅模式(观察者模式) 首先,不要被发布-订阅者模式这个鬼名字给整蒙了,由于最开始我没整明白,发布者、订阅者...

  • 观察者模式&&订阅发布模式

    观察者模式&&订阅发布模式 参考:知乎-观察者模式 vs 发布订阅模式[https://zhuanlan.zhih...

  • 发布订阅和观察者模式的区别

    有些人认为观察者模式就是发布订阅模式,实际上观察者模式是包含了订阅发布模式,发布订阅模式只是观察者模式中的一种。观...

  • redis 学习(12)-- redis 发布订阅

    redis 发布订阅 发布订阅模式中的角色 发布者(publisher) 订阅者(subscriber) 频道(c...

网友评论

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

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