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.
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