Обзор темы [Шаблоны проектирования]

Затем: МотивацияНазначение

Определяет зависимость "один ко многим" между объектами так, чтобы при изменении состояния одного объекта, всем зависящим от него объектам автоматически сообщили об этом.

Затем: СтруктураМотивация

Общий побочный эффект при делении системы на коллекцию общающихся классов - потребность поддержать зависимости между связанными объектами. Вы не хотите создавать при этом классы с сильной связью, потому что это уменьшает их возможность многократного использования.

Например, много комплектов инструментальных средств графического интерфейса отделяют представительные аспекты интерфейса пользователя от реальных данных [KP88, LVC89, P+88, WGM88] .Классы, определяющие данные прикладной программы и их представление могут быть повторно использованы независимо. И объект электронной таблицы, и объект гистограммы могут описывать информацию в том же самом приложении, используя различные представления. Электронная таблица и график не знают ничего относительно друг друга, таким образом позволяя Вам многократно использовать только один из них. Но они ведут себя, как если бы они знали друг о друге. Когда пользователь изменяет информацию в электронной таблице, гистограмма немедленно отражает изменения, и наоборот.

Это поведение подразумевает, что электронная таблица и гистограмма - зависимые объекты данных, и следовательно нужно сообщать о любом изменении в их состоянии. И нет никакой причины ограничивать количество зависимых объектов двумя; может существовать любое количество различных пользовательских интерфейсов к одним и тем же данным.

Шаблон Наблюдателя описывает как установить эти связи. Ключевые объекты в этом шаблоне - объект и наблюдатель. Объект может иметь любое количество зависимых наблюдателей. Всем наблюдателям сообщают всякий раз, когда объект изменяет своё состояние. В ответ, каждый наблюдатель делает запрос объекту, синхронизируя с ним своё состояние.

Этот вид взаимодействия также известен как, публикация - подписчик. Объект – инициатор уведомлений. Он инициирует их, не зная о том,  кто наблюдатели. Любое количество наблюдателей может подписаться на получение уведомлений.

 

Затем: Составные частиСтруктура

Составные части