观察者模式是一种行为设计模式,用于定义对象之间的一对多依赖关系,当一个对象的状态发生变化时,所有依赖它的对象都会得到通知并自动更新。
from abc import ABC, abstractmethod
from typing import Listclass Observable:def __init__(self):self._observers: List[Observer] = []def add_observer(self, observer):self._observers.append(observer)def remove_observer(self, observer):self._observers.remove(observer)def notify_observers(self, message):for observer in self._observers:observer.update(message)class Observer(ABC):@abstractmethoddef update(self, message):passclass ConcreteObservable(Observable):def update_state(self, new_state):self.notify_observers(new_state)class ConcreteObserver(Observer):def __init__(self, name):self.name = namedef update(self, message):print(f"{self.name} received message: {message}")if __name__ == "__main__":observable = ConcreteObservable()observer1 = ConcreteObserver("Observer 1")observer2 = ConcreteObserver("Observer 2")observable.add_observer(observer1)observable.add_observer(observer2)observable.update_state("New State")