观察者模式(Observer):
定义了对象间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。
类似报纸订阅,当订阅报纸后,一有更新就会自动收到,除非退订;这里我们将出版者称为“主题”(Subject),订阅者成为“观察者”(Observer)。
原则:
为交互对象之间的松耦合而努力
案例:
现在要实现一个气象站,观测三个数据:温度,湿度和气压;气象站有两个布告板:分别显示当前最新值和平均值;当气象数据更新后,气象站要能自动跟新所有布告板。
代码:
#!/usr/bin/python
class Subject:
def register(self, observer):
pass
def deregister(self, observer):
pass
def notify_observers(self):
pass
class Observer:
def update(self, temperature, humidity, pressure):
pass
class DisplayElement:
def display(self):
pass
class WeatherData(Subject):
def __init__(self):
self.observers = []
def register(self, o