觀察者模式是一種行為設計模式,用于定義對象之間的一對多依賴關系,當一個對象的狀態發生變化時,所有依賴它的對象都會得到通知并自動更新。
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")