Patrón Chain of Responsability
Evita ligar al emisor de una petición y al receptor de la misma dando a más de un objeto la posibilidad de gestionar la petición. Encadena los objetos receptores y va pasando las peticiones a lo largo de la cadena hasta que un objeto la maneje.
Motivación
- Hay algunos objetos con métodos similares que pueden ser apropiados para la acción que el programa reclama. Sin embargo, es más apropiado que los propios objetos decidan cual es el que va a llevar a cabo la acción en vez de construir ésta decisión en el código de llamada.
- No se quiere construir estructuras del tipo if-else o switch-case.
- Es probable que existan nuevos objetos que queramos añadir a la lista de opciones de procesamiento mientras el programa se está ejecutando.
- Debe utilizarse cuando más de un objeto tiene que actuar sobre una llamada y no queremos construir el conocimiento de estas interacciones dentro del programa cliente.

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
Ventajas e inconvenientes de este patrón:
- Reduce el acoplamiento.
- Añade flexibilidad para asignar responsabilidades a objetos.
- No se garantiza la recepción.
No hay comentarios:
Publicar un comentario