
观察者模式
Figure 1 illustrates how the Observer pattern works.
图1显示了观察者模式的机制。
Figure 5: Structural elements in the Observer pattern.
图5:observer模式中的结构化元素。
This general data pattern is a form of the Observer pattern.
这种通用数据模式是Observer模式的一种形式。
Here is a trait that implements the logic of the Observer Pattern.
这里是一个实现了观察者模式逻辑的trait。
Callbacks are really a special case of the Observer Pattern [GOF1995].
回调其实是观察者模式[g OF 1995]的一个特例。
观察者模式(Observer Pattern)是一种行为型设计模式,用于在对象之间建立一对多的依赖关系。当一个对象(称为“主题”或“被观察者”)的状态发生改变时,所有依赖它的对象(称为“观察者”)会自动收到通知并更新。该模式由GoF(Gang of Four)在《设计模式:可复用面向对象软件的基础》一书中首次系统化提出。
主题(Subject)
主题维护一个观察者列表,并提供注册(attach
)和解除注册(detach
)方法。当主题的状态变化时,调用notify
方法遍历通知所有观察者。例如,在气象监测系统中,气象站作为主题,会向注册的显示屏发送温度更新。
观察者(Observer)
观察者定义统一的更新接口(如update
方法)。具体观察者(如手机App或网页控件)实现此接口以响应主题状态的变化。Java的java.util.Observer
接口和C#的IObserver<T>
均是该模式的标准实现。
LiveData
设计。观察者模式通过解耦主题与观察者,增强了系统的扩展性和维护性。根据微软.NET设计指南,该模式适用于需要低耦合且高效事件处理的场景。例如,金融交易系统中价格变动触发的实时风控计算,便依赖此模式保障可靠性与实时性。
观察者模式(Observer Pattern)是一种行为型设计模式,用于在对象之间建立一对多的依赖关系。当一个对象(称为主题/被观察者)的状态发生变化时,所有依赖它的对象(称为观察者)会自动收到通知并更新。
Subject(主题/被观察者)
attach
)、注销(detach
)和通知(notify
)方法。Observer(观察者)
update
方法),供主题调用以传递状态变化。notify
方法遍历观察者列表,逐一触发其update
方法。update
获取最新状态并执行响应逻辑。class Subject:
def __init__(self):
self._observers = []
def attach(self, observer):
self._observers.append(observer)
def notify(self):
for observer in self._observers:
observer.update()
class TemperatureSensor(Subject):
def set_temperature(self, temp):
self.temperature = temp
self.notify()
class DisplayPanel:
def update(self):
print("温度已更新")
# 使用
sensor = TemperatureSensor()
display = DisplayPanel()
sensor.attach(display)
sensor.set_temperature(25)# 触发DisplayPanel更新
观察者模式是解耦系统组件的经典方案,适用于需要动态、灵活通知机制的场景。
【别人正在浏览】