zoukankan      html  css  js  c++  java
  • 手写一个简单的发布订阅模式

    在发布/订阅模式中,你可以想象存在一个消息中心的地方,你可以在那里“注册一条消息”,那么被注册的这条消息可以被感兴趣的若干人“订阅”,一旦未来这条“消息被发布”,则所有订阅了这条消息的人都会得到提醒。

    这个就是发布/订阅模式的设计思路。接下来我们一点一点实现一个简单的发布/订阅模式
      function MessageCenter() {
                let message = {}; //存放消息的对象
                this.register = function (messageType) {
                    if (typeof message[messageType] == "undefined") {
                        message[messageType] = [];
                    } else {
                        console.log("消息已经被注册")
                    }
                } //进行消息注册
    
                this.subscribe = function (messageType, func) {
                    if (typeof message[messageType] != "undefined") {
                        message[messageType].push(func);
                    } else {
                        console.log("消息未注册,不能进行订阅");
                    }
                } //进行消息订阅,传入的2个参数,messageType是消息标识
                  //func,订阅后等待要执行的回调函数
                this.fire = function (messageType, args) {
                    if (typeof message[messageType] == "undefined") {
                        console.log("消息未注册,不能进行发布");
                        return false;
                    }
                    let events = {
                        type: messageType,
                        args: args || {}
                    }
    
                    message[messageType].forEach(function (item) {
                        item(events);
                    })
    
                }//发布消息,传入的2个参数,essageType是消息标识,args是要
            //操作的数据
            }
    
            let messae = new MessageCenter();
            messae.register("benben");
            messae.subscribe("benben", subsfun);
            messae.fire("benben", "你好");
            function subsfun(event) {
                console.log(event.type, event.args); //笨笨,你好
            }    

        
     
     
  • 相关阅读:
    入门篇:Ubuntu用apache做web服务器
    Linux上vi(vim)编辑器使用教程
    vim打开文档和多文档编辑
    vim常用命令
    进行有效编辑的七种习惯
    Ubuntu Nginx 开机自启动
    UBUNTU SERVER 12.04搭建PHP环境
    ubuntu下安装Apache+PHP+Mysql
    Ubuntu 12.04下LAMP安装配置
    data warehouse 1.0 vs 2.0
  • 原文地址:https://www.cnblogs.com/garyzhijiang/p/9242498.html
Copyright © 2011-2022 走看看