Наблюдатель (Observer) — различия между версиями

Материал из Вики ИТ мехмата ЮФУ
Перейти к: навигация, поиск
(Назначение)
(Описание)
Строка 8: Строка 8:
  
 
=== Описание ===
 
=== Описание ===
 +
В системе, в которой одни объекты зависят от других, необходимо согласованное обновление информации.
 +
 +
Ключевыми в паттерне Наблюдатель являются '''Субъект''' и '''Наблюдатель'''. У Субъекта может быть сколько угодно зависимых от него наблюдателей.
 +
 +
Все наблюдатели уведомляются об изменениях в состоянии субъекта. Получив уведомление, наблюдатель опрашивает Субъекта с тем чтобы синхронизировать с ним своё состояние.
 +
 +
=== Использование ===
 +
* Когда у абстракции есть два аспекта, один из которых зависит от другого.
 +
* Когда при модификации одного объекта требуется изменить единым образом неизвестное количество других объектов.
 +
* Когда нужно разорвать жесткую связь между связанными объектами, один из которых зависит от другого
  
 
=== Реализация ===
 
=== Реализация ===

Версия 11:28, 21 июля 2014

К основной странице курса

Другое имя

Издатель-Подписчик (Publisher-Subscriber)

Назначение

При изменении состояния одного объекта все зависимые от него объекты (подписчики) оповещаются об обновлении.

Описание

В системе, в которой одни объекты зависят от других, необходимо согласованное обновление информации.

Ключевыми в паттерне Наблюдатель являются Субъект и Наблюдатель. У Субъекта может быть сколько угодно зависимых от него наблюдателей.

Все наблюдатели уведомляются об изменениях в состоянии субъекта. Получив уведомление, наблюдатель опрашивает Субъекта с тем чтобы синхронизировать с ним своё состояние.

Использование

  • Когда у абстракции есть два аспекта, один из которых зависит от другого.
  • Когда при модификации одного объекта требуется изменить единым образом неизвестное количество других объектов.
  • Когда нужно разорвать жесткую связь между связанными объектами, один из которых зависит от другого

Реализация

Диаграмма классов

ObserverCommon.png

Участники

Диаграмма последовательности

Файл:.png

Пример

Достоинства и недостатки

Варианты