Back to questions
Junior — Middle
51
Можно ли объяснить концепцию и применение паттерна наблюдатель в программировании?
Answer from AI
sobes.tech AI
Паттерн "Наблюдатель" (Observer) используется для организации связи между объектами, где один объект (издатель) уведомляет другие объекты (наблюдатели) об изменениях своего состояния.
Применение:
- Позволяет реализовать слабую связанность между компонентами.
- Часто используется в GUI для обновления интерфейса при изменении данных.
- В системах событий и подписок.
Пример на Python:
class Subject:
def __init__(self):
self._observers = []
self._state = None
def attach(self, observer):
self._observers.append(observer)
def detach(self, observer):
self._observers.remove(observer)
def notify(self):
for observer in self._observers:
observer.update(self._state)
def set_state(self, state):
self._state = state
self.notify()
class Observer:
def update(self, state):
print(f"Observer received new state: {state}")
subject = Subject()
observer1 = Observer()
observer2 = Observer()
subject.attach(observer1)
subject.attach(observer2)
subject.set_state('Новое состояние')
В этом примере при изменении состояния объекта Subject все подписанные наблюдатели получают уведомление и реагируют на него.