Перехватив шаблон фильтра
Перехватив Шаблон фильтра (фиксирование Шаблон фильтра) для запроса приложения или в ответ, чтобы сделать некоторые предварительной обработки / пост-обработки. Определите фильтр, и до запроса к практическому применению целевого приложения по запросу. Фильтры могут сделать аутентификации / авторизации / регистрации или запроса отслеживания, то запрос в соответствующий обработчик. Следующее является объектом данного шаблона проектирования.
- Фильтр (Filter) - фильтр перед или после выполнения обработчика запроса запроса для выполнения определенных задач.
- Фильтр цепи (фильтр цепи) - Фильтр цепь с множеством фильтров и реализации этих фильтров на цель в определенной последовательности.
- Target - Target является обработчик объекта запроса.
- Диспетчер фильтров (Filter Manager) - фильтры Filter Manager и цепочка фильтров.
- Клиент (Client) - объект клиентак целевому объекту , чтобы отправить запрос.
реализация
Мы создадимFilterChain,FilterManager, Target, клиент представляет объекты как различные объекты.AuthenticationFilterиDebugFilterпредставляют субъекты фильтров.
InterceptingFilterDemo,мы продемонстрировать использование классаClientдля демонстрации перехватывающих шаблон проектирования фильтра.
Шаг 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
Проверьте выход.
Проверка подлинности запроса: НАЧАЛО Журнал запроса: НАЧАЛО Выполнение запроса: НАЧАЛО