使用观察者模式让班长通知学生起来上课了
# 主题 ---> 通知者 --->班长
class Monitor(object):
def __init__(self):
self.observer = [] # 保存所有观察对象
self.status = '' # 表示状态
def attach(self, observer):
'''通知每一个观察者'''
self.observer.append(observer)
def notify(self):
# 通知每一个观察者
for observer in self.observer:
observer.update()
# 观察者--->睡觉的同学
class SleepStudentObserver(object):
def __init__(self, name, monitor):
self.name = name
self.monitor = monitor # 绑定通知者
def update(self):
print('{},{}赶快起来学习吧'.format(self.monitor.status, self.name))
if __name__ == '__main__':
monitor = Monitor()
observer1 = SleepStudentObserver('zs', monitor)
observer2 = SleepStudentObserver('ls', monitor)
monitor.attach(observer1)
monitor.attach(observer2)
monitor.status = '时间到了'
monitor.notify()
运行结果:
时间到了,zs赶快起来学习吧
时间到了,ls赶快起来学习吧