Chain Of Responsibility - Departamento de Ingeniería de Sistemas

Anuncio
Chain Of Responsibility
Fernando Antonio Aragón
Manjarrés
Patrón
Cadena de Responsabilidad
• Es un patrón de diseño
consistente en objetos de
comando y varios objetos de
procesamiento
• Cada objeto de comando, tiene
la lógica de lo que puede hacer y
de lo que no, y como pasarle la
responsabilidad al objeto
siguiente en la cadena
Divide Y Vencerás
• Este patrón divide las tareas en objetos
cuidando que cada uno de ellos haga solo
lo que es su tarea. Es decir, no
extralimitarse en sus funciones.
E
J
E
M
P
L
O
• En el ejemplo disponible en
http://www.developer.com/java/oth
er/article.php/631261 se habla de
un sistema de monitoreo, en donde
la responsabilidad del servidor
central es guardar todos los
eventos que suceden en varios
sensores que están conectados a
él. Para esto, los sensores le
informan sobre cambios que
ocurran. EL SERVIDOR NO ES
QUIEN ESTÁ AL TANTO DE LOS
CAMBIOS; SOLO LOS REGISTRA
Organización Jerárquica
Diagrama De Clases
Recomendaciones
• Separar de responsabilidades.
• Establecer de entradas y salidas
claras para cada eslabón.
• Evitar eslabones débiles o
innecesarios.
• Evitar eslabones que no hagan
nada o que no estén en su lugar,
que no conecten correctamente sus
dos eslabones relacionados
Ventajas! ☺
• Bajo Acoplamiento:
• Tanto el manejador como el cliente no saben lo que no
está en sus manos saber. Tampoco saben de la
estructura de la cadena en sí.
• Se sabe como llegar al primer eslabón y se sabe que
llegará al último, pero no se sabe la implementación de
por medio.
• Flexibilidad Agregada:
• Chain of responsibility da la posibilidad de distribuir
responsabilidades entre objetos de comando. Por
ejemplo en el caso de tener un departamento de
recepción de documentos que está muy ocupado
atendiendo a varios clientes a la vez, se puede hacer
que la secretaria reciba algunos de los documentos, y
que el portero haga lo mismo.
Desventajas
• La recepción no está garantizada:
• Al no haber un receptor explícito para los
mensajes, no se garantiza que llegue, y
no se garantiza que cuando llegue se
procese como se necesita que se haga.
Bibliografía
• http://www.codeproject.com/gen/design/ch
ain_response.asp
• http://en.wikipedia.org/wiki/Chain-ofresponsibility_pattern
• http://www.developer.com/java/other/articl
e.php/631261
¡GRACIAS!
Descargar