La idea del patrón Chain of Responsibility es desacoplar a los emisores de los receptores, dándole a varios objetos la posibilidad de tratar una petición. La petición se pasa por una cadena de objetos hasta que uno de ellos la procesa.
Nombre:
Chain of Responsibility.
También conocido como:
Cadena de Responsabilidad.
Propósito:
Evita acoplar el emisor de una petición a su receptor, dando a más de un objeto la posibilidad de responder a la petición. Encadena los objetos receptores y pasa la petición a través de la cadena hasta que es procesada por algún objeto.
Aplicabilidad:
Este patrón se utiliza generalmente cuando:
· Hay un grupo de objetos en un sistema que potencialmente pueden responder para el mismo tipo de mensaje.
· Los mensajes deben ser manejados por uno de varios objetos dentro del sistema.
· Algunos eventos pueden ser manipulados en el nivel donde son recibidos o elaborados, mientras que otros deben ser enviados a otros objetos.
Estructura:

Participantes:
· Handler: Define una interfaz para tratar las peticiones, implementa el enlace al sucesor.
· ConcreteHandler: Trata las peticiones de las que es responsable, puede acceder a su sucesor. Si el ConcreteHandler puede manejar la petición, lo hace, en caso contrario la reenvía a su sucesor.
· Client: Inicializa la petición a un objeto ConcreteHandler de la cadena.
Consecuencias:
· Reduce el acoplamiento.
· Añade flexibilidad para asignar responsabilidades a objetos.
· No se garantiza la recepción.
Patrones relacionados:
· Composite.
Etiquetas: Behavioral Patterns, Cadena de responsabilidad, Chain of responsibility, Patrones de Comportamiento