zoukankan      html  css  js  c++  java
  • 发布订阅者模式

    人物:订阅者,发布者
    订阅者:添加订阅者,存储订阅者
    发布者:发布信息

    1.添加订阅者,创建同类型容器(数组),存储同类型订阅者,同时将回调传入数组
    2.发布者获取不同类型的容器(数组),进行循环,然后调用其回调,进行发布
     
        const obj = {
          // 存储订阅者
          userList: {},

          // 添加订阅者
          addUser (key, callBack) {
            const { userList } = this // 解构存储订阅者列表

            if (!userList[key]) { // 对不同类型的订阅者进行分类
              userList[key] = []
            }

            userList[key].push(callBack) // 订阅者传入的回调放入数组
          },

          // 发布者,给订阅者发布信息
          publish (key, opt) {
            const arr = this.userList[key] // 获取订阅者列表
            arr.forEach(item => { // 循环每一名订阅者的回调,进行调用(发布)
              item(opt)
            })
          }
        }

        // 添加订阅者
        obj.addUser('m20', opt => {
          console.log('小白:', opt)
        })

        obj.addUser('m20', opt => {
          console.log('小黑:', opt)
        })

        obj.addUser('m40', opt => {
          console.log('小黄:', opt)
        })

        // 订阅者发布信息
        obj.publish('m20', '1000万')

        obj.publish('m40', '2000万')
     
     
     
      
  • 相关阅读:
    转载 线程池 异步I/O线程 <第三篇>
    转载 线程初步了解
    gdal库中设置prj4库全路径的用法
    比较ArrayList、LinkedList、Vector
    JavaScript创建日志文件并记录时间的做法
    从length与length()开始谈Java
    Java异常处理示例
    hudson添加批处理编译命令的注意事项
    使用相对路径导入ado库的方法
    如何将字段中带逗号的SQLite数据库数据导入到MySQL
  • 原文地址:https://www.cnblogs.com/fengxiana/p/13256538.html
Copyright © 2011-2022 走看看