Latest web development tutorials

Перехватив шаблон фильтра

Перехватив Шаблон фильтра (фиксирование Шаблон фильтра) для запроса приложения или в ответ, чтобы сделать некоторые предварительной обработки / пост-обработки. Определите фильтр, и до запроса к практическому применению целевого приложения по запросу. Фильтры могут сделать аутентификации / авторизации / регистрации или запроса отслеживания, то запрос в соответствующий обработчик. Следующее является объектом данного шаблона проектирования.

  • Фильтр (Filter) - фильтр перед или после выполнения обработчика запроса запроса для выполнения определенных задач.
  • Фильтр цепи (фильтр цепи) - Фильтр цепь с множеством фильтров и реализации этих фильтров на цель в определенной последовательности.
  • Target - Target является обработчик объекта запроса.
  • Диспетчер фильтров (Filter Manager) - фильтры Filter Manager и цепочка фильтров.
  • Клиент (Client) - объект клиентак целевому объекту , чтобы отправить запрос.

реализация

Мы создадимFilterChain,FilterManager, Target, клиент представляет объекты как различные объекты.AuthenticationFilterиDebugFilterпредставляют субъекты фильтров.

InterceptingFilterDemo,мы продемонстрировать использование классаClientдля демонстрации перехватывающих шаблон проектирования фильтра.

Перехватив модели фильтра UML диаграмма

Шаг 1

Создание фильтра интерфейса фильтра.

Filter.java

открытый интерфейс фильтра {
   общественного недействительными выполнить (запрос String);
}

Шаг 2

Создание сущностей фильтра.

AuthenticationFilter.java

Открытый класс AuthenticationFilter реализует фильтр {
   общественного недействительными выполнить (запрос String) {
      System.out.println ( "Проверка подлинности запроса:" + запрос);
   }
}

DebugFilter.java

Открытый класс DebugFilter реализует фильтр {
   общественного недействительными выполнить (запрос String) {
      System.out.println ( "Журнал запроса:" + запрос);
   }
}

Шаг 3

Создание Target.

Target.java

общественного класса Target {
   общественного недействительными выполнить (запрос String) {
      System.out.println ( "Выполнение запроса:" + запрос);
   }
}

Шаг 4

Создание цепочки фильтров.

FilterChain.java

импорт java.util.ArrayList;
импорт java.util.List;

Открытый класс FilterChain {
   частный List <Фильтр> фильтры = новый ArrayList <Filter> ();
   частная цель Target;

   общественного недействительными AddFilter (фильтр фильтр) {
      filters.add (фильтр);
   }

   общественного недействительными выполнить (запрос String) {
      для (фильтра: фильтры) {
         filter.execute (запрос);
      }
      target.execute (запрос);
   }

   общественного недействительными setTarget (целевая мишень) {
      this.target = цель;
   }
}

Шаг 5

Создание Диспетчер фильтров.

FilterManager.java

Открытый класс FilterManager {
   FilterChain FilterChain;

   общественности FilterManager (Целевая цель) {
      FilterChain = новый FilterChain ();
      filterChain.setTarget (цель);
   }
   общественного недействительными SetFilter (фильтр фильтр) {
      filterChain.addFilter (фильтр);
   }

   общественного недействительными filterRequest (запрос String) {
      filterChain.execute (запрос);
   }
}

Шаг 6

Создание клиента клиента.

Client.java

Открытый класс клиента {
   FilterManager filterManager;

   общественного недействительными setFilterManager (FilterManager filterManager) {
      this.filterManager = filterManager;
   }

   общественного недействительными SendRequest (запрос String) {
      filterManager.filterRequest (запрос);
   }
}

Шаг 7

Использоватьклиентдля демонстрации перехватывающих шаблон проектирования фильтра.

FrontControllerPatternDemo.java

Открытый класс InterceptingFilterDemo {
   государственной статической силы основных (String []) {агдз
      FilterManager filterManager = новый FilterManager (новый Target ());
      filterManager.setFilter (новый AuthenticationFilter ());
      filterManager.setFilter (новый DebugFilter ());

      Клиент Клиент = новый клиент ();
      client.setFilterManager (filterManager);
      client.sendRequest ( "HOME");
   }
}

Шаг 8

Проверьте выход.

Проверка подлинности запроса: НАЧАЛО
Журнал запроса: НАЧАЛО
Выполнение запроса: НАЧАЛО