观察者模式是一种行为设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。

以下是一个简单的观察者模式示例:

  • 定义观察者接口:定义一个观察者接口,其中包含一个更新方法。
  • 定义具体观察者:实现观察者接口,定义具体的更新逻辑。
  • 定义目标接口:定义一个目标接口,其中包含一个注册观察者和移除观察者方法。
  • 定义具体目标:实现目标接口,维护一个观察者列表,并在状态改变时通知所有观察者。

示例代码

class Observer:
    def update(self, message):
        pass

class ConcreteObserver(Observer):
    def update(self, message):
        print(f"Observer received message: {message}")

class Subject:
    def __init__(self):
        self._observers = []

    def register_observer(self, observer):
        self._observers.append(observer)

    def unregister_observer(self, observer):
        self._observers.remove(observer)

    def notify_observers(self, message):
        for observer in self._observers:
            observer.update(message)

class ConcreteSubject(Subject):
    def __init__(self):
        super().__init__()
        self._state = None

    def set_state(self, state):
        self._state = state
        self.notify_observers(f"State changed to: {state}")

# 使用示例
subject = ConcreteSubject()
observer1 = ConcreteObserver()
observer2 = ConcreteObserver()

subject.register_observer(observer1)
subject.register_observer(observer2)

subject.set_state("New State")

# 图片
<center><img src="https://cloud-image.ullrai.com/q/design_pattern_observer_pattern/" alt="Observer Pattern Design Pattern"/></center>

更多关于设计模式的资料,请访问[设计模式概览](/docs/design_patterns_overview)。