Наблюдатель (Observer)

Метафора

 

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

 

Назначение

 

Позволяет определить зависимость «один-ко-многим» так, что при изменении одного объекта, все зависимые от этого изменения объекты были оповещены об этом. В ABAP паттерн реализуется через подписку на события объекта, примером могут служить события ALV при определенных действиях пользователя. Классический же способ не подразумевает использование событий, вместо этого используется агрегация зависимых объектов в инициаторе и вызов некоторого метода у них во время срабатывания события.

 

Диаграмма

 

Наблюдатель

Наблюдатель

 

Subject – регистрирует подписчиков и работает с абстракцией Observer. Каждый зарегистрированный подписчик (ConcreteObserever) уведомляется о событии на инициаторе.

 

Пример

 

Шаблон может быть использован, если требуется дополнительная обработка при подписке/отписке на события, т.к. реализация, построенная на событиях, не может контролировать этот процесс (например, разрешить подписку на событие только после проверки на полномочия).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *