Наблюдатель (Observer)
Материал из Вики ИТ мехмата ЮФУ
Другое имя
Издатель-Подписчик (Publisher-Subscriber)
Назначение
При изменении состояния одного объекта все зависимые от него объекты (подписчики) оповещаются об обновлении.
Описание
В системе, в которой одни объекты зависят от других, необходимо согласованное обновление информации.
Ключевыми в паттерне Наблюдатель являются Субъект и Наблюдатель. У Субъекта может быть сколько угодно зависимых от него наблюдателей.
Все наблюдатели уведомляются об изменениях в состоянии субъекта. Получив уведомление, наблюдатель опрашивает Субъекта с тем чтобы синхронизировать с ним своё состояние.
Использование
- Когда у абстракции есть два аспекта, один из которых зависит от другого.
- Когда при модификации одного объекта требуется изменить единым образом неизвестное количество других объектов.
- Когда нужно разорвать жесткую связь между связанными объектами, один из которых зависит от другого
Реализация
Диаграмма классов
Участники
- Subject - субъект
- Observer - наблюдатель
- ConcreteSubject - конкретный субъект
- ConcreteObserver - конкретный наблюдатель