"红灯停,绿灯行" 日常中常见的信号系统就是观察者模式的实际映射,这里交通灯是被观察者,也就是subject,各种开车的比如出租车司机,货车,行人都是观察者。在软件世界中也有这样的概念,一个对象的状态变化会改变一个或多个对象的状态。我们称之为观察者模式。
实际代码中遇到的如:
1.vue中数据双向绑定,父子组件消息传递。
2,微信公众号的订阅模式。
关键点:
定义观察者:
# encoding: utf-8
# 观察者
class Driver(object):
def __init__(self):
pass
def update(self):
pass
class Taxi(Driver):
def __init__(self, name):
self.name = name
def update(self, light):
if light == 'red':
print('红灯停,%s要停车' % self.name)
else:
print('绿灯行,%s要启动车子' % self.name)
定义被观察者:
subject:
1.
class Subject(object):
def __init__(self):
self.observer_list = []
def attach(self, observer):
if observer not in self.observer_list:
sel