Observer (значения)¶
Observer (с англ. — «наблюдатель») — многозначный термин, использующийся в программировании (шаблон проектирования), в военном деле (корректировщик артиллерийского огня), в авиации (бортовой наблюдатель), а также в названиях ряда печатных изданий и программных продуктов.
¶Шаблон проектирования «Наблюдатель»
В объектно-ориентированном программировании Observer — это поведенческий шаблон проектирования, который создаёт механизм подписки, позволяющий одним объектам (наблюдателям) следить за изменениями состояния других объектов (субъектов) и автоматически реагировать на них. Шаблон также известен как Publisher-Subscriber (издатель-подписчик) или Listener (слушатель).
¶Структура и принцип работы
Основные участники шаблона:
- Subject (субъект, издатель) — объект, который хранит состояние и управляет списком подписчиков. Предоставляет методы для добавления, удаления и оповещения наблюдателей.
- Observer (наблюдатель, подписчик) — интерфейс с методом
update(), который вызывается субъектом при изменении состояния. - ConcreteSubject (конкретный субъект) — реализация субъекта, хранящая актуальное состояние.
- ConcreteObserver (конкретный наблюдатель) — реализация наблюдателя, которая выполняет конкретные действия при получении уведомления.
Принцип работы: наблюдатели регистрируются у субъекта через метод подписки. Когда состояние субъекта изменяется, он вызывает метод уведомления, который перебирает всех подписанных наблюдателей и вызывает их метод обновления. Таким образом, объекты не связаны жёсткими ссылками друг на друга, что снижает связанность системы.
¶Преимущества и недостатки
Преимущества шаблона:
- реализует принцип открытости/закрытости (можно добавлять новых наблюдателей без изменения кода субъекта);
- устанавливает связь между объектами во время выполнения программы;
- позволяет гибко управлять подписками.
Недостатки:
- порядок уведомлений не определён;
- возможна утечка памяти, если наблюдатель не отписывается от субъекта;
- при большом числе наблюдателей возможны проблемы с производительностью.
¶Применение
Шаблон Observer широко применяется в графических интерфейсах (обработка событий мыши и клавиатуры), в архитектуре Model-View-Controller (MVC), где представления выступают наблюдателями за моделью, в системах обмена сообщениями, в игровых движках и в реактивном программировании. В стандартной библиотеке Java шаблон реализован через интерфейсы java.util.Observer и класс java.util.Observable (устарели в Java 9), в .NET — через события и делегаты.
¶Военное дело
В артиллерии observer (наблюдатель, передовой авиационный наводчик) — военнослужащий или подразделение, осуществляющее разведку целей, корректировку огня и оценку результатов стрельбы. Наблюдатели располагаются на наблюдательных пунктах, обеспечивающих прямой обзор поля боя, и передают данные о координатах целей на огневые позиции.
В авиации наблюдателем называли члена экипажа самолёта-разведчика, отвечавшего за визуальное обнаружение целей, ведение наблюдения и фотосъёмку. В годы Первой мировой войны наблюдатели выполняли функции корректировщиков артиллерийского огня, а позже — воздушных разведчиков.
¶Печатные издания
Observer — распространённое название газет и журналов. Наиболее известные издания:
- The Observer — британская воскресная газета, основанная в 1791 году. Считается старейшей воскресной газетой в мире. С 1993 года принадлежит Guardian Media Group и выходит вместе с газетой The Guardian.
- The New York Observer — американская еженедельная газета, основанная в 1987 году, освещающая новости культуры, политики и недвижимости Нью-Йорка.
- The Observer (Индия) — ежедневная англоязычная газета, издаваемая в штате Одиша.
- The Jakarta Observer — индонезийская англоязычная газета, выходившая с 1955 по 1960-е годы.
¶Программное обеспечение
- Observer — программа для мониторинга состояния серверов и сетевых устройств (HP Network Node Manager i, ранее — OpenView).
- Observer — модуль расширения для браузера Firefox, предназначенный для анализа веб-страниц и отслеживания изменений в DOM-структуре.
- Observer — инструмент для сбора аналитических данных в системах управления базами данных.
¶Другие значения
- В теории систем и кибернетике наблюдатель — субъект или устройство, фиксирующее состояние системы.
- В философии и физике (квантовая механика) — наблюдатель, влияющий на результат измерения.
- В международных организациях (ООН, ОБСЕ) — наблюдатель — представитель государства или организации, присутствующий на заседаниях без права голоса.
- В спорте — технический делегат или судья-наблюдатель, контролирующий соблюдение правил.
- Observer — название нескольких моделей автомобилей, в том числе британского автобуса Leyland Observer (1930-е годы).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →
