观察者模式(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 设计模式教程

图片展示

观察者模式