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