观察者模式是一种行为设计模式,用于定义对象之间的一对多依赖关系,当一个对象的状态发生变化时,所有依赖它的对象都会得到通知并自动更新。
from abc import ABC, abstractmethod
from typing import List
class 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):
@abstractmethod
def update(self, message):
pass
class ConcreteObservable(Observable):
def update_state(self, new_state):
self.notify_observers(new_state)
class ConcreteObserver(Observer):
def __init__(self, name):
self.name = name
def 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")