Patrón Cadena de Responsabilidad
Patrón Cadena de Responsabilidad
Este patrón de diseño de comportamiento es muy útil cuando tenemos una solicitud que puede ser manejada por varios objetos, pero no sabemos de antemano cuál de ellos será el encargado de procesarla. Imagina una cadena de objetos, donde cada uno tiene la oportunidad de procesar la solicitud. Si un objeto no puede procesarla, la pasa al siguiente en la cadena hasta que alguien se hace cargo o la solicitud llega al final de la cadena sin ser procesada.
¿Para qué sirve?
- Desacoplar: Separa el objeto que envía una solicitud de los objetos que la manejan.
- Flexibilidad: Permite agregar o quitar manejadores de la cadena sin afectar a otros componentes del sistema.
- Simplificar: Hace más sencillo agregar nuevas funcionalidades al sistema, ya que solo es necesario crear un nuevo manejador y agregarlo a la cadena.
¿Cómo funciona?
- Cada manejador: Tiene un método para procesar la solicitud y un atributo para referenciar al siguiente manejador en la cadena.
- Solicitud: Se envía a la cabeza de la cadena.
- Procesamiento: Cada manejador intenta procesar la solicitud. Si puede, la procesa y detiene la cadena. Si no puede, pasa la solicitud al siguiente manejador.
- Finalización: La solicitud se propaga a través de la cadena hasta que es procesada o llega al final.
Diagrama simplificado:
Ejemplo práctico:
Imagina un sistema de aprobación de solicitudes de vacaciones. Cada solicitud pasa por una cadena de aprobadores:
- Jefe directo: Aprueba solicitudes menores.
- Jefe de departamento: Aprueba solicitudes más largas.
- Recursos humanos: Aprueba solicitudes especiales.
Si el jefe directo no puede aprobar una solicitud, la pasa al jefe de departamento, y así sucesivamente.
Ventajas:
- Flexibilidad: Puedes agregar o quitar aprobadores fácilmente.
- Extensibilidad: Puedes agregar nuevos tipos de solicitudes sin modificar los aprobadores existentes.
- Reusabilidad: Los manejadores pueden ser reutilizados en diferentes contextos.
Consideraciones:
- Rendimiento: Si la cadena es muy larga, el procesamiento de una solicitud puede ser lento.
- Complejidad: Puede ser difícil de depurar si la cadena se vuelve muy compleja.
¿Cuándo usarla?
- Cuando múltiples objetos pueden manejar una solicitud.
- Cuando no se sabe de antemano qué objeto será el adecuado.
- Cuando se necesita una forma flexible de agregar o quitar manejadores.
En resumen, el patrón Cadena de Responsabilidad es una herramienta útil para crear sistemas flexibles y escalables. Al desacoplar los objetos que envían y procesan solicitudes, se facilita la adición de nuevas funcionalidades y la modificación del sistema.

Comentarios
Publicar un comentario