观察者模式

    export  class EventCenter {
         //定义数据类型 
          static  events:Map<string,Array<EventHander>> = new Map<string,Array<EventHander>>();
         
          //注册
          static registEvent(eventName:string,target:object,func:Function):void {
              if(eventName == undefined || target == undefined || func == undefined) {
                  throw Error("regist event error");
                  return;
              }
            
              if(EventCenter.events[eventName] == undefined) {
                   EventCenter.events[eventName] = new Array<EventHander>();
              }
              let hander = new EventHander(target,func);
              EventCenter.events[eventName].push(hander);
          }

        //触发
        static postEvent(eventName:string,param?:any)void {
              let handers = EventHander.events[eventName];
              if(handers == undefined) {return};
              for(let i = 0 ; i< handers.length;i++) {
                    let hander = handers[i];
                    if(hander) {
                        try {
                            hander.func.call(hander.target,param);
                        }catch(e) {
                            console.log(e.message);
                            console.log(e.stack.toString());
                        }
                    }
              }
        }
    }
export class EventHander {
     target:object;  //执行对象
     func:Function;  //执行函数
    constructor(target:object,func:Function) {
        this.target = target;
        this.func   = func;
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。