Лучшие вопросы
Таймлайн
Чат
Перспективы

Наблюдатель (шаблон проектирования)

Из Википедии, свободной энциклопедии

Наблюдатель (шаблон проектирования)
Remove ads

Наблюдатель (англ. Observer) — поведенческий шаблон проектирования. Также известен как «подчинённые» (англ. Dependents). Реализует у класса механизм, который позволяет объекту этого класса получать оповещения об изменении состояния других объектов и тем самым наблюдать за ними[2].

Краткие факты Наблюдатель, Тип ...

Классы, на события которых другие классы подписываются, называются субъектами (Subjects), а подписывающиеся классы называются наблюдателями (англ. Observers)[3].

Похожие шаблоны: «издатель — подписчик», «посредник», «одиночка».

Remove ads

Назначение

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

Реализация

Thumb

При реализации шаблона «наблюдатель» обычно используются следующие классы:

  • Observable — интерфейс, определяющий методы для добавления, удаления и оповещения наблюдателей;
  • Observer — интерфейс, с помощью которого наблюдатель получает оповещение;
  • ConcreteObservable — конкретный класс, который реализует интерфейс Observable;
  • ConcreteObserver — конкретный класс, который реализует интерфейс Observer.
Remove ads

Область применения

Шаблон «наблюдатель» применяется в тех случаях, когда система обладает следующими свойствами:

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

Данный шаблон часто применяют в ситуациях, в которых отправителя сообщений не интересует, что делают получатели с предоставленной им информацией.

Примеры

Суммиров вкратце
Перспектива

PHP5 (SPL)

PHP5

C#

Java

C++

ActionScript

VB.NET

Python

Object Pascal

Ruby

Rust

Io

JavaScript ES6

Remove ads

Дополнительная информация

В платформе .NET Framework 4.0 шаблон разработки наблюдателя применяется путём реализации универсальных интерфейсов System.IObservable<T> и System.IObserver<T>[2].

Литература

  • Эрих Гамма, Ричард Хелм, Ральф Джонсон, Джон Влиссидес. Приемы объектно-ориентированного проектирования. Паттерны проектирования = Design Patterns. Elements of Reusable Object-Oriented Software. СПб.: Питер, 2009. — 366 с. ISBN 978-5-469-01136-1.
  • Эрик Фримен, Элизабет Фримен. Паттерны проектирования = Head First Design Patterns. СПб.: Питер, 2011. — 656 с. ISBN 978-5-459-00435-9.
Remove ads

Примечания

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads