En el campo del desarrollo de software , un patrón de interceptor es un patrón de diseño de software que se utiliza cuando los sistemas o marcos de software desean ofrecer una forma de cambiar o aumentar su ciclo de procesamiento habitual. Por ejemplo, una secuencia de procesamiento típica (simplificada) para un servidor web es recibir un URI del navegador, asignarlo a un archivo en el disco, abrir el archivo y enviar su contenido al navegador. Cualquiera de estos pasos podría reemplazarse o cambiarse, por ejemplo, reemplazando la forma en que los URI se asignan a los nombres de archivo, o insertando un nuevo paso que procese el contenido de los archivos.
Los aspectos clave del patrón son que el cambio es transparente y se utiliza automáticamente . En esencia, el resto del sistema no tiene que saber que se ha agregado o cambiado algo y puede seguir funcionando como antes. Para facilitar esto, se debe implementar una interfaz predefinida para la extensión, se requiere algún tipo de mecanismo de despacho donde se registran los interceptores (esto puede ser dinámico, en tiempo de ejecución o estático, por ejemplo, a través de archivos de configuración) y se proporcionan objetos de contexto , que permiten acceso al estado interno del marco. [1]
Usos y contexto
Los usuarios típicos de este patrón son servidores web [2] (como se mencionó anteriormente), middleware orientado a objetos [3] y mensajes [4]
Un ejemplo de implementación de este patrón es la interfaz javax.servlet.Filter , que forma parte de Java Platform, Enterprise Edition .
La programación orientada a aspectos (AOP) también se puede usar en algunas situaciones para proporcionar la capacidad de un interceptor, aunque AOP no usa los elementos típicamente definidos [ aclaración necesaria ] para el patrón del interceptor.
Referencias
- ^ "Schmidt, Stal, Rohnert & Buschmann:" Arquitectura de software orientada a patrones Vol.2: patrones para objetos simultáneos y en red ", págs. 109-140, abril de 2001" . Archivado desde el original el 23 de diciembre de 2017 . Consultado el 24 de noviembre de 2009 .
- ^ Apache Software Foundation: Tomcat 6.0 Channel Interceptor Reference, consultado el 24 de noviembre de 2009
- ^ Dios mío, "CORBA v3.1, Parte I: Interfaces", Capítulo 16 "Interceptores portátiles", enero de 2008
- ^ E. Curry, D. Chambers y G. Lyons, "Ampliación del middleware orientado a mensajes mediante interceptación", presentado en el tercer taller internacional sobre sistemas distribuidos basados en eventos (DEBS '04), ICSE '04, Edimburgo, Escocia, Reino Unido 2004.