Python程序中的观察者模式结构编写示例
察者模式定义 模式结构与说明 1.Subject:主题(目标)接口,主题可以注册、移除对其感兴趣的观察者,在自身数据发生变化的时候,还可以通知这些观察者。一个主题可以有多个观察者,需要注意的是,观察者的顺序应当是无关紧要的。主题也被称为“被观察者”(Observable) 示例 #observer pattern class subject(): def __init__(self,dat): self.listobj = list() #主题中的列表变量用来存储观察者 self.dat = dat #主题中的数据变化时,需要通知观察者 def registerObject(self,obj): self.listobj.append(obj) #实现订阅主题的函数 def removeObject(self,obj): pass def notifyObservers(self):#通知各个观察者数据已经发生变化,观察者相应需要更新自己的数据 for i in range(len(self.listobj)): self.listobj[i].update() def setdat(self,new_dat):#设置数据 if self.dat != new_dat: self.dat = new_dat self.notifyObservers() class observer():#观察者 def __init__(self,sub): #观察者初始化时,需要订阅主题 self.sub = sub self.sub.registerObject(self) self.number = self.sub.dat def update(self):#观察者更新 self.number = self.sub.dat def display(self): print self.number if __name__ =="__main__": su = subject(10) ob1 = observer(su) ob1.display() ob2 = observer(su) ob2.display() su.setdat(11) ob1.display() ob2.display() (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |