Sei sulla pagina 1di 9

Escuela superior

politécnica de
Chimborazo
CHAIN OF RESPONSABILITY
INTEGRANTES:
ALEXANDER TUBÓN
RODRIGO LAZO
Chain of Responsability

Clasificación. Comportamental.
Intención. Evita acoplar el emisor de una petición con el 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
Alias. Cadena de Responsabilidades
Chain of Responsability
Motivación.
La idea del patrón 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.

EL primer objeto en la cadena recibe la solicitud y, o se ocupa de ella o la envía al siguiente


candidato de la cadena, que hace lo mismo. El objeto que hace la solicitud no tiene
conocimiento explicito de quien se hará cargo de esta, se dice que la petición tiene un
receptor implícito.
Pretendemos dar un mayor detalle y especificación a las peticiones generadas. Las
peticiones serán filtradas por todos los receptores a medida que se van generando los
resultados esperados.
Chain of Responsability

Aplicabilidad.
Usamos Cadena de responsabilidades cuando:
 Hay más de un objeto que pueden manejar una petición y esa petición no se
conoce a priori, sino que se debe de determinar automáticamente.
 Se quiere enviar una petición a un objeto entre varios sin especificar explícitamente
el receptor.
 El conjunto de objetos que pueden tratar una petición debería ser especificado
dinámicamente.
Chain of Responsability

Estructura
Chain of Responsability

Participantes
Manejador
 Define una interfaz para tratar las peticiones.
 Implementa el enlace al sucesor (opcional).
Manejador Concreto
 Trata las peticiones de las que es responsable
 Puede acceder a su sucesor
 Si el Manejador Concreto puede manejar la petición, lo hace, en caso contrario la
reenvía a su sucesor.
Cliente
 Inicializa la petición a un objeto Manejador Concreto de la cadena
Chain of Responsability

Colaboraciones. Cuando un cliente envía una petición, ésta se propaga a través de la


cadena hasta que un objeto ConcreteHandler se hace responsable de procesarla.
Consecuencias
 Reduce el acoplamiento. Ni el receptor ni el emisor se conocen explícitamente. Un
objeto sólo tiene que saber que una petición será manejada.
 Adiciona flexibilidad en la asignación de responsabilidades a objetos. Las
responsabilidades de los mensajes pueden cambiar mediante la organización del
proceso de ejecución.
 No se garantiza la recepción. Puesto que no existe un receptor específico para los
mensajes, éstos pueden quedarse sin procesar.
Chain of Responsability

Implementación
 Implementar el sucesor en la cadena. Existen dos posibilidades: Definir un nuevo
sucesor, usar un sucesor existente.
 Conexión de los sucesores. Los propios ConcreteHandler serán los que se encargarán
de reenviar la petición de forma incondicional. Las referencias deberán estar
definidas.
 Representación de las peticiones. Uso de paso de parámetros o variables mediante
una función manejadora, o hacer uso de clases.
Chain of Responsability

Código de ejemplo.
Banco (Solicitud de Préstamo )
 Si el monto no supera los $ 10.000 entonces el ejecutivo de cuenta pueda aprobar
el préstamo.
 Si el monto esta entre los $10.000 y $50.000 entonces la persona indicada para
realizar la aprobación es el líder inmediato de dicho ejecutivo.
 Si el monto se encuentra entre $ 50.000 y $100.000 entonces es el Gerente quién
debe realizar dicha aprobación.
 Por montos superiores a los $100.000 entonces la aprobación la realizará el Director.
Patrones relacionados. Composite.

Potrebbero piacerti anche