#coding=utf-8
class 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()
使用python实现观察者思想
最新推荐文章于 2022-05-09 10:21:08 发布