Interceptando padrão de filtro
Interceptando padrão de Filtro (interceptação Padrão de filtro) para solicitar um aplicativo ou em resposta a fazer alguma / pós-processamento de pré-processamento. Definir o filtro, e antes do pedido para a aplicação prática da aplicação de destino, mediante pedido. Os filtros podem fazer a autenticação / autorização / registo ou a pedido de rastreamento, em seguida, a solicitação para o manipulador adequado. O que se segue é uma entidade deste padrão de projeto.
- Filtro (Filter) - filtro antes ou após a execução do manipulador de solicitação do pedido para executar determinadas tarefas.
- cadeia de filtros (Filter Cadeia) - cadeia de filtros com uma pluralidade de filtros, ea implementação desses filtros no alvo em uma sequência definida.
- Target - Alvo é o manipulador de solicitação objeto.
- Gestor de filtros (Filter Manager) - filtros Gerenciador de filtro e da cadeia de filtro.
- Cliente (Cliente) - objeto de clienteao Target objeto para enviar o pedido.
realização
Vamos criarFilterChain,FilterManager, Target, Cliente representa entidades como vários objetos.AuthenticationFiltereDebugFilterrepresentam filtros entidades.
InterceptingFilterDemo,demonstramos o uso de classe doclientepara demonstrar o padrão de design Intercepting Filter.
passo 1
Criar Filtro interface Filter.
Filter.java
Filtro interface pública { public void executar (request String); }
passo 2
Criar filtro entidade.
AuthenticationFilter.java
classe pública AuthenticationFilter implementa filtro { public void executar (request String) { System.out.println ( "pedido de autenticação:" + pedido); } }
DebugFilter.java
classe pública DebugFilter implementa filtro { public void executar (request String) { System.out.println ( "log pedido:" + pedido); } }
passo 3
Criar Target.
Target.java
Alvo classe pública { public void executar (request String) { System.out.println ( "pedido de execução:" + pedido); } }
passo 4
Criar uma cadeia de filtro.
FilterChain.java
importação java.util.ArrayList; import java.util.List; classe pública FilterChain { Lista privada <Filter> filtros = new ArrayList <Filter> (); Alvo privado; public void addFilter (filtro Filter) { filters.add (filtro); } public void executar (request String) { para (filtro Filtro: filtros) { filter.execute (request); } target.execute (request); } setTarget public void (alvo Target) { this.target = alvo; } }
passo 5
Criar filtro Manager.
FilterManager.java
classe pública FilterManager { FilterChain FilterChain; pública FilterManager (alvo Target) { FilterChain = new FilterChain (); filterChain.setTarget (alvo); } public void setFilter (filtro Filter) { filterChain.addFilter (filtro); } filterRequest public void (request String) { filterChain.execute (request); } }
passo 6
Criar um cliente cliente.
Client.java
Cliente classe pública { FilterManager filterManager; setFilterManager public void (FilterManager filterManager) { this.filterManager = filterManager; } public void sendRequest (request String) { filterManager.filterRequest (request); } }
etapa 7
Useclientepara demonstrar o padrão de design Intercepting Filter.
FrontControllerPatternDemo.java
classe pública InterceptingFilterDemo { main (String [] args) public static void { FilterManager filterManager = new FilterManager (novo alvo ()); filterManager.setFilter (nova AuthenticationFilter ()); filterManager.setFilter (nova DebugFilter ()); Cliente cliente = new Cliente (); client.setFilterManager (filterManager); client.sendRequest ( "HOME"); } }
passo 8
Verifique saída.
Autenticando pedido: PRINCIPAL solicitação de log: Página Executando pedido: PRINCIPAL