Chain of Responsability

Patrón de diseño de comportamiento

El patrón de diseño Cadena de responsabilidad (Chain of Responsability) es un patrón que se distingue por su versatilidad, permitiendo resolver problemas donde no estamos muy seguros de qué objeto deberá procesar una solicitud concreta; este patrón de diseño resuelve problemas fácilmente donde la herencia no puede. Apoyándose de una estructura en forma de cadena donde una secuencia de objetos tratan de atender una petición.

Patrón de diseño Chain of Responsability
Patrón de diseño Chain of Responsability

Los componentes del patrón se explican a continuación:

  • Client: Usuario o sistema que inicia la ejecución del patrón.
  • AbstractHandler: Clase base utilizada para definir la estructura de todos los ConcreteHandler. Esta clase es una agregación de sí misma, lo que le permite contener otro AbstractHandler que continuará con la cadena de ejecución.
  • ConcreteHandler: Representan las implementaciones concretas de AbstractHandler las cuales se utilizarán para procesar las solicitudes.
Diagrama de secuencia del patrón Chain of Responsability
Diagrama de secuencia del patrón Chain of Responsability
  1. El cliente solicita el procesamiento de una solicitud a una cadena de responsabilidad.
  2. El primer Handler intenta procesar el mensaje, sin embargo, no es capaz de procesarlo por alguna razón y envía el mensaje al siguiente handler de la cadena.
  3. El segundo Handler intenta procesar el mensaje sin éxito, por lo que envía el mensaje al siguiente Handler de la cadena.
  4. El tercer Handler también intenta procesar el mensaje sin éxito y envía el mensaje al siguiente Handler de la cadena.
  5. El HandlerN (Algun handler de la secuencia) por fin es capaz de procesar el mensaje exitosamente y regresa una respuesta (opcional) de tal forma que la respuesta es replicada por todos los Handlers pasados hasta llegar al Cliente.

Ejemplo del mundo real

Mediante la implementación del patrón de diseño Chain of Responsability implementaremos un sistema de validación de órdenes. Cuando trabajamos con sistemas ERP o CRM, es muy común gestionar casi cualquier cosa mediante ordenes, ya sea órdenes de venta, compra, servicio, instalación, etc. Dichas ordenes son objetos muy complejos que contiene dentro un gran número de otros objetos, como clientes, proveedores, productos, etc. y los sistemas están forzados a validar que una orden este completa y que todos los datos capturados sean válidos para el tipo de |orden. Para ello utilizaremos el patrón Chain Of Responsability para crear un mecanismo óptimo para validar cualquier tipo de orden, reutilizando los validadores entre los distintos tipos de órdenes.

Descubre como el patrón Chain of Responsability nos ayuda a resolver este problema.
Descubre como el patrón Chain of Responsability nos ayuda a resolver este problema.

¿Sabes la importancia de los patrones de diseño?

Los patrones de diseño son la clave para crecer profesionalmente hacia la arquitectura de software, sin mencionar que los salarios son los más altos de la industria de IT, descúbrelo en este video.

🎉 Este video es parte del curso de patrones de diseño, inscríbete aquí 🎉

Acerca de este libro

Introducción a los patrones de diseño

Todo lo que acabas de ver en este artículo es solo una pequeña parte del libro Introducción a los patrones de diseño, el libro más completo de patrones de diseño en español, abarcamos 25 patrones de diseño junto con 25 proyectos del mundo real. Olvídate de aprender patrones de diseño con los ejemplos típicos de Internet de cómo hacer una pizza, animales y figuras geométricas. te invito a que veas mi libro:

Ver libro
Todos los derechos reservados ©
Reactive programming
LinkedinYoutubeTwitterFacebook

© 2021, Copyright - Oscar Blancarte. All rights reserved.