Latest web development tutorials

Interceptando patrón de filtro

Interceptando patrón de filtro (interceptando patrón del filtro) para solicitar una aplicación o en respuesta a hacer un poco de pre-procesamiento / post-procesamiento. Definir el filtro, y antes de la solicitud a la aplicación práctica de la aplicación de destino a petición. Los filtros se pueden hacer de autenticación / autorización / registro o solicitud de seguimiento, entonces la petición al controlador adecuado. La siguiente es una entidad de este patrón de diseño.

  • Filter (filtro) - filtro antes o después de la ejecución de la solicitud controlador de solicitudes para llevar a cabo ciertas tareas.
  • cadena de filtros (filtro de cadena) - cadena de filtros con una pluralidad de filtros, y la aplicación de estos filtros sobre el objetivo en una secuencia definida.
  • Target - Target es el manejador de peticiones de objetos.
  • Administrador de filtros (Administrador de filtros) - filtros Administrador de filtros y de la cadena de filtro.
  • Client (Cliente) - objeto de clientea Target objeto de enviar la solicitud.

realización

Vamos a crearFilterChain,FilterManager, Target, el Cliente representa entidades como diversos objetos.AuthenticationFilteryDebugFilterrepresentan filtros entidades.

InterceptingFilterDemo,que demuestran el uso de la clasede clientepara demostrar el patrón de diseño Intercepting Filter.

Interceptando patrón de filtro diagrama UML

Paso 1

Crear filtro de interfaz de filtro.

Filter.java

Filtro interfaz pública {
   public void ejecutar (cadena de solicitud);
}

Paso 2

Crear un filtro entidad.

AuthenticationFilter.java

public class AuthenticationFilter implementa Filtro {
   public void ejecutar (petición String) {
      System.out.println ( "Solicitud de Autenticación:" + petición);
   }
}

DebugFilter.java

DebugFilter clase pública implementa Filtro {
   public void ejecutar (petición String) {
      System.out.println ( "registro de solicitudes:" + petición);
   }
}

paso 3

Crear objetivo.

Target.java

Objetivo public class {
   public void ejecutar (petición String) {
      System.out.println ( "solicitud de ejecución:" + petición);
   }
}

Paso 4

Crear una cadena de filtros.

FilterChain.java

java.util.ArrayList importación;
java.util.List importación;

public class {FilterChain
   Lista privada <Filtro> filtros = new ArrayList <Filtro> ();
   meta Meta privada;

   public void addFilter (filtro Filter) {
      filters.add (filtro);
   }

   public void ejecutar (petición String) {
      para (filtro del filtro: filtros) {
         filter.execute (petición);
      }
      target.execute (petición);
   }

   pública setTarget vacío (meta Meta) {
      this.target = objetivo;
   }
}

paso 5

Crear Administrador de filtros.

FilterManager.java

public class {FilterManager
   FilterChain filterChain;

   FilterManager pública (meta Meta) {
      filterChain = new FilterChain ();
      filterChain.setTarget (objetivo);
   }
   public void setFilter (filtro Filter) {
      filterChain.addFilter (filtro);
   }

   pública filterRequest vacío (petición String) {
      filterChain.execute (petición);
   }
}

paso 6

Crear un cliente de cliente.

Client.java

Public class Cliente {
   FilterManager FilterManager;

   pública setFilterManager vacío (FilterManager FilterManager) {
      this.filterManager = FilterManager;
   }

   public void sendRequest (petición String) {
      filterManager.filterRequest (petición);
   }
}

paso 7

UtilizarClientpara demostrar el patrón de diseño Intercepting Filter.

FrontControllerPatternDemo.java

public class {InterceptingFilterDemo
   principales argumentos (String []) {public static void
      FilterManager FilterManager = new FilterManager (nuevo objetivo ());
      filterManager.setFilter (nueva AuthenticationFilter ());
      filterManager.setFilter (nueva DebugFilter ());

      cliente de cliente = new Cliente ();
      client.setFilterManager (FilterManager);
      client.sendRequest ( "HOME");
   }
}

paso 8

Verifique la salida.

La autenticación de solicitud: INICIO
registro de solicitudes: INICIO
solicitud de ejecución: INICIO