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!