Наблюдатель (Observer, Dependents, Publish-Subscribe) — паттерн поведения объектов. Определяет зависимость типа «один ко многим» между объектами таким образом, что при изменении состояния одного объекта все зависящие от него оповещаются об этом и автоматически обновляются.
class Subject: def __init__(self): self.data = None self.observers = set() def attach(self, observer): self.observers.add(observer) def detach(self, observer): self.observers.remove(observer) def set_data(self, data): self.data = data self.notify(data) def notify(self, data): for observer in self.observers: observer.update(data) class BaseObserver: def update(self, data): raise NotImplementedError class Observer(BaseObserver): def __init__(self, name): self.name = name def update(self, data): print(self.name, data) subject = Subject() subject.attach(Observer("Observer 1")) subject.attach(Observer("Observer 2")) subject.set_data("Hello")
Получаем
Observer 2 Hello Observer 1 Hello