7 de julio de 2013

Intercepting Filter

La solución que proporciona este patrón es el uso de filtros en cadena para procesar servicios comunes interceptando las peticiones entrantes y las respuestas salientes, permitiendo un pre y post-procesamiento, pudiendo añadir y eliminar estos filtros sin necesitar cambios en nuestro código existente.
Los filtros pueden ser por ejemplo de registro, autenticación, validación de sesión, etc.
La tarea de los filtros es hacer la autenticación / autorización / registro o el seguimiento de la solicitud y luego pasar a las peticiones de los controladores correspondientes. 
Este patrón está relacionado con el Front Controller y resuelven problemas similares. Este patrón está centrando en el filtrado de peticiones, mientras que el Front Controller elige la acción correspondiente al recibir una petición, esto podría realizar un filtrado si la petición no llega convenientemente filtrada.
A continuación se presentan las entidades de este tipo de patrón de diseño:

Cliente: es el objeto que envía la solicitud al objeto de destino

FilterManager: maneja el procesamiento de los filtros. Crea el FilterChain con los filtros      apropiados, en el orden correcto e inicia el procesamiento.

FilterChain: es una coleccion ordenada de filtros indenpendientes.

FilterOne, FilterTwo, FilterThree: son los filtros individuales que son destinados a un objetivo. El FilterChain coordina su procesamiento.

Target: El Target es el recurso que el cliente ha solicitado.


·         Estructura (Diagrama de clases)


·         Diagrama de secuencia

    a)    FilterManager
El FilterManager maneja el procesamiento de filtros. Crea el FilterChain con los filtros apropiados, en el orden correcto e inicia el procesamiento.
    b)    FilterChain
El FilterChain es una coleccion ordenada de filtros indenpendientes.
    c)    FilterOne, FilterTwo, FilterThree
Estos son los filtros individuales que son destinados a un objetivo. El FilterChain coordina su procesamiento.
    d)    Target
El Target es el recurso que el cliente ha solicitado.

·         Patrones Relacionados
Front Controller: El controlador resuelve algunos problemas similares, pero está mejor diseñado para manejar el procesamiento principal.
Decorator [GoF]: El patrón Intercepting Filter está relacionado con el patrón Decorator, que proporciona envolturas conectables dinámicamente.
Template Method [GoF]: El patrón de Plantillas de Métodos se utiliza para implementar la Estrategia de Plantilla de Filtros.
Interceptor [POSA2]: El patrón Intercepting Filter está relacionado con el patron Interceptor, que permite que se pueden añadir servicios de forma transparente y dispararlos automáticamente.
Pipes and Filters [POSA1]: El patrón Intercepting Filter está relacionado con el patrón Pipes and Filters.


No hay comentarios:

Publicar un comentario