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