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