newbie_evolve's Blog

Happy coding
python设计模式之“策略模式”

python设计模式之“观察者模式”

newbie_evolve posted @ 2013年8月15日 10:26 in python之年 , 729 阅读

设计模式不会直接进入你的代码中,而是先进入你的大脑。知识的过程必须经历三个阶段:感性认识——>思考——>再到知识。

任何知识的运用都必须经过大脑的感知、分析、理解和总结,最后才能变成自己。

#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()

登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter