Перехоплювач () — шаблон проєктування, який використовують коли система хоче надати альтернативний спосіб виконання, або доповнити чинний цикл виконання додатковими операціями.

Важливо розуміти, що зміни є прозорими та використовується автоматично. По суті, решта системи не повинна знати, що щось додано або змінено, і може продовжувати працювати як раніше. Аби реалізувати цю логіку необхідно мати інтерфейс перехоплювача, який можна реалізувати та вбудувати у систему. Реєстрація перехоплювачів може відбуватись, під час компіляції або виконання програми або ж за допомогою конфігурацій. Важливо також, щоб перехоплювач отримував стан систему через вхідні параметри, та при потребі міг їх міняти.

Реалізація

Нехай дана система, яка реалізує клієнт-серверну архітектуру та автентифікацію за допомогою json web токенів. Тоді необхідно у кожний HTTP-запит додати токен. Щоб запобігти змінам у багатьох компонентах системи, напишемо перехоплювач HTTP-запитів, який буде додавати токен в заголовки запиту.

Подібного можна досягнути при взаємодії сервера з іншим сервером.

Якщо нам необхідно додати логіку трасування про збереження об'єктів у базу даних при цьому не змінюючи чинний функціонал, ми також можемо написати перехоплювач метода.

Даний шаблон також може бути корисний у системах орієнтованих на обробку повідомлень.

Див. також Ланцюжок відповідальностей

Джерела Interceptor