使用python实现观察者思想

来源:互联网 发布:爱动漫软件下载 编辑:程序博客网 时间:2024/05/23 13:22
#coding=utf-8class Observer(object):    def __init__(self):        self.handlersDic = {}        def fireEvent(self, eventKey, **kw):        """        触发        """        eList = self.handlersDic.get(eventKey,[])        for handler in eList: handler(**kw)            def un(self,eventKey, handler):        """        在事件字典里删除相关方法        """        eList = self.handlersDic.get(eventKey,[])        for i in range(len(eList)-1, -1, -1):            if eList[i] == handler: del eList[i]                       def on(self,eventKey, handler):        """        关联        """        eList = self.handlersDic.get(eventKey,[])        if not eList: self.handlersDic[eventKey] = eList        eList.append(handler)if __name__ == '__main__':    import time    def eatFood(t):        print "i am eat food at %s!" %t    o = Observer()    o.on("eatingFood", eatFood)    def singing():        print "i am singing!"        t = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time()))        o.fireEvent("eatingFood", t=t)    singing()

0 0
原创粉丝点击