设计模式:一种通用的解决方案
观察者模式
#观察者
#(Observer)将自己注册到被观察对象(Subject)中,被观察对象将观察者存放在一个容器(Container)里。
class Observer:
def __init__(self,name):
self.name=name
def update(self,msg):
print(self.name+'收到信息'+msg)
#被观察
#被观察对象发生了某种变化(如图中的SomeChange),从容器中得到所有注册过的观察者,将变化通知观察者。
class Subject:
def __init__(self):
self.observers=[]
def add_observer(self,observer):
self.observers.append(observer)
def remove_observer(self,observer):
self.observers.remove(observer)
def notify(self,msg):
for observer in self.observers:
observer.update(msg)
注册观察者,观察者订阅通知
xiaoming=Observer('xiaoming ')
lihua=Observer('lihua')
rain=Subject()
rain.add_observer(xiaoming)
rain.add_observer(lihua)
通知观察者
rain.notify('下雨了')
rain.remove_observer(lihua)
rain.notify('打雷了')