Latest web development tutorials

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.

Interceptando padrão de filtro UML diagrama

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