观察者模式(Observer Pattern)是一种行为型设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。
观察者模式的核心概念
- Subject(主题): 被观察的对象,它负责维护一个观察者列表,并在状态改变时通知这些观察者。
- Observer(观察者): 观察主题的对象,它需要实现一个更新方法,以便在主题状态改变时接收通知并做出响应。
观察者模式的实现
在 Python 中,我们可以使用标准库中的 collections
模块中的 Observable
类来实现观察者模式。
from collections import Observable
class Subject(Observable):
def __init__(self):
Observable.__init__(self)
def state_changed(self):
self.notify_all()
class Observer:
def update(self):
pass
# 示例
subject = Subject()
observer1 = Observer()
observer2 = Observer()
subject.register(observer1)
subject.register(observer2)
subject.state_changed() # 触发观察者更新
观察者模式的优点
- 低耦合: 主题和观察者之间解耦,主题不需要知道具体观察者的实现。
- 扩展性强: 可以轻松地添加新的观察者或主题。
- 易于维护: 当主题或观察者发生变化时,只需修改相应的类即可。
相关链接
更多关于 Python 设计模式的信息,请访问我们的Python 设计模式教程。
图片展示
观察者模式