Python27_观察者模式
2019-09-27 本文已影响0人
jxvl假装
class Observer(object):
"""
观察者。个人理解:订阅者,即订阅主题的人
"""
def __init__(self, name):
self.name = name
def update(self, msg):
print(self.name + "收到信息:" + msg)
class Subject(object): #主题类
"""
订阅者,一些供人订阅的主题
"""
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) #xiaoming订阅了rain这个主题,一旦下雨了,就会通知xiaoming
rain.add_observer(lihua) #lihua也订阅了rain这个主题
rain.notify("下雨了...") #通知所有的观察者,下雨了
rain.remove_observer(lihua) #lihua不再订阅下雨这个主题
rain.notify("打雷了...") #向订阅了下雨这个主题的人通知:打雷了
以上输出结果如下:
输出结果