Наблюдатель (шаблон проектирования)
Материал из Википедии — свободной энциклопедии
Наблюдатель, Observer — поведенческий шаблон проектирования. Также известен как «подчинённые» (Dependents), «издатель-подписчик» (Publisher-Subscriber).
[править] Назначение
Определяет зависимость типа «один ко многим» между объектами таким образом, что при изменении состояния одного объекта все зависящие от него оповещаются об этом событии.
[править] Реализация
При реализации шаблона «наблюдатель» обычно используются следующие классы.
- Observable — интерфейс, определяющий методы для добавления, удаления и оповещения наблюдателей.
- Observer — интерфейс, с помощью которого наблюдаемый объект оповещает наблюдателей.
- ConcreteObservable — конкретный класс, который реализует интерфейс Observable.
- ConcreteObserver — конкретный класс, который реализует интерфейс Observer.
[править] Область применения
Шаблон «наблюдатель» применяется в тех случаях, когда система обладает следующими свойствами:
- существует, как минимум, один объект, рассылающий сообщения
- имеется не менее одного получателя сообщений, причём их количество и состав могут изменяться во время работы приложения.
Данный шаблон часто применяют в ситуациях, в которых отправителя сообщений не интересует, что делают с предоставленной им информацией получатели.
Поведенческие шаблоны проектирования |
Interpreter/Интерпретатор | Template Method/Шаблонный метод | Command/Команда | Chain of Responsibility/Цепочка обязанностей | Iterator/Итератор, Cursor | Mediator/Посредник | Memento/Хранитель, Token | Observer/Наблюдатель, Listener | State/Состояние | Strategy/Стратегия | Visitor/Посетитель | Event listener | Single-serving visitor | Hierarchical visitor | |