Наблюдатель - который создает механизм подписки, позволяющий одним объектам (наблюдателям) следить и реагировать на события, происходящие в субъектах.
Стоит использовать когда нужно реализовать рассылку событий множеству объектов, когда изменение состояния одного объекта требует изменения в других или для создания механизма подписки на события.
`class Event: def init(self): self._handlers = []
def subscribe(self, handler): self._handlers.append(handler)
def unsubscribe(self, handler): self._handlers.remove(handler)
def fire(self, args, **kwargs): for handler in self._handlers: handler(args, **kwargs)
class Button: def init(self): self.click_event = Event()
def click(self): print("Кнопка нажата") self.click_event.fire(self)
#Наблюдателиdef log_click(sender): print(f"Лог: Кнопка {sender} была нажата")
def show_message(sender): print("Показать сообщение: Кнопка нажата!")
#Использованиеbutton = Button() button.click_event.subscribe(log_click) button.click_event.subscribe(show_message)
button.click() #weekofpatterns`