zoukankan      html  css  js  c++  java
  • 简易的观察者模式

    所谓观察者模式,就是一对多的关系,一处调用多处实现,然后具备一些增删改的小功能。

    源码

    
        class Event{
            constructor(){
                this.handlers = {}
            }
    
            on(type,handler){
                if(!this.handlers.hasOwnProperty(type)){
                    this.handlers[type] = [];
                }
                this.handlers[type].push(handler)
            }
    
            trigger(type,args){
    
                if(Array.isArray(this.handlers[type])){
                    let handlers = this.handlers[type]
                    for(let i = 0 ,len = handlers.length;i<len;i++)
                    {
                        handlers[i](args)
                    }
                }
            }
    
            off(type,handler){
                if(Array.isArray(this.handlers[type])){
                    let handlers = this.handlers[type]
                    for(var i = 0 ,len = handlers.length;i<len;i++){
                        if(handlers[i] === handler)
                        {
                            break;
                        }
                    }
                    handlers.splice(i,1)
                }
            }
        }
    
    

    测试

    
    var event = new Event();
    var fn = function(){
        console.log('fn')
    }
    event.on('aaa',()=>{console.log(123)})
    event.on('aaa',()=>{console.log('bbb')})
    event.on('aaa',(a)=>{console.log(a)})
    event.on('aaa',fn)
    event.on('b',(a)=>{console.log('bbbbbbbbb')})
    
    event.trigger('aaa','bbbb')
    event.trigger('b','bbbb')
    
    console.log('---------------------------------------')
    event.off('aaa',fn)
    event.trigger('aaa','bbbb')
    
    
  • 相关阅读:
    数据类型对照表
    MySql
    操作MongoDB
    Linux常用命令
    MongoDB性能参数
    有关Remoting的几个结论与论证
    异步获取远程文件
    Bigtable:一个分布式的结构化数据存储系统(转)
    windbg命令
    C#下几种排序算法
  • 原文地址:https://www.cnblogs.com/lakeInHeart/p/7429848.html
Copyright © 2011-2022 走看看