模式说明
定义了一种一对多的关系,让多个观察对象同时监听一个主题对象,当主题对象状态发生变化时会通知所有观察者。
模式结构图
程序示例
说明:两个观察者,得到同一个通知
代码:
class Subject(object): observers=[] info='' def __init__(self,info): self.info = info def notify(self): for o in self.observers: o.display(self.info) def attach(self,observer): self.observers.append(observer) def deattach(self,observer): self.observers.remove(observer) class Observer(object): def __init__(self,name): self.name=name def display(self,info): print 'notice '+ self.name + ' that '+ info class NBAObserver(Observer): pass class F1Observer(Observer): pass if __name__=='__main__': subject = Subject('win win win win') observer = NBAObserver('NBA') subject.attach(observer) observer = F1Observer('F1') subject.attach(observer) subject.notify()
运行结果:
参考来源:
http://www.cnblogs.com/chenssy/p/3679190.html
http://www.cnblogs.com/wuyuegb2312/archive/2013/04/09/3008320.html
http://www.cnblogs.com/Terrylee/archive/2006/07/17/334911.html