Образец перехватчика - Interceptor pattern

Пример перехватчика

В области разработка программного обеспечения, образец перехватчика это шаблон разработки программного обеспечения который используется, когда программные системы или рамки хотят предложить способ изменить или увеличить свой обычный цикл обработки. Например, (упрощенная) типичная последовательность обработки для веб-сервера состоит в том, чтобы получить URI от браузера, сопоставить его с файлом на диске, открыть файл и отправить его содержимое в браузер. Любой из этих шагов можно заменить или изменить, например путем замены способа сопоставления URI с именами файлов или путем вставки нового шага, который обрабатывает содержимое файлов.

Ключевые аспекты модели заключаются в том, что изменение прозрачный и использовал автоматически. По сути, остальной части системы не нужно знать, что что-то было добавлено или изменено, и она может продолжать работать, как прежде. Чтобы облегчить это, предопределенный интерфейс для расширения должно быть реализовано какое-то отправка требуется механизм там, где зарегистрированы перехватчики (он может быть динамическим, во время выполнения или статическим, например, через файлы конфигурации) и объекты контекста предоставляются, которые позволяют получить доступ к внутреннему состоянию фреймворка.[1]

Использование и контекст

Типичные пользователи этого шаблона - веб-серверы.[2] (как упоминалось выше), объект-[3] и промежуточное ПО, ориентированное на сообщения[4]

Примером реализации этого паттерна является javax.servlet.Filter интерфейс, который является частью Платформа Java, Enterprise Edition.

Аспектно-ориентированное программирование (АОП) также может использоваться в некоторых ситуациях для обеспечения возможности перехватчика, хотя АОП не использует обычно определенные элементы.[требуется разъяснение ] для образца перехватчика.

Рекомендации

  1. ^ "Schmidt, Stal, Rohnert & Buschmann:" Шаблонно-ориентированная архитектура программного обеспечения, том 2: Шаблоны для параллельных и сетевых объектов ", стр. 109-140, апрель 2001 г.". Архивировано из оригинал на 2017-12-23. Получено 2009-11-24.
  2. ^ Apache Software Foundation: Tomcat 6.0 Channel Interceptor Reference, по состоянию на 24 ноября 2009 г.
  3. ^ OMG, «CORBA v3.1, часть I: Интерфейсы», глава 16 «Переносные перехватчики», январь 2008 г.
  4. ^ Э. Карри, Д. Чемберс и Дж. Лайонс, «Расширение ориентированного на сообщения промежуточного программного обеспечения с помощью перехвата», представленный на Третьем международном семинаре по распределенным системам, основанным на событиях (DEBS '04), ICSE '04, Эдинбург, Шотландия, Великобритания, 2004 г.