Junior — Middle
92
Se poate explica conceptul și aplicarea pattern-ului observator în programare?
Răspuns de la 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 все подписанные наблюдатели получают уведомление и реагируют на него.