PATRON DE SOFTWARE: COMMAND Pontificia Universidad Javeriana Ingeniería de Software José Luis Uribe Aponte
PATRON DE SOFTWARE:COMMAND AGENDA Definición,Intención y Motivación. Aplicabilidad y Estructura Consecuencias Ejemplo Bibliografía PATRON DE SOFTWARE: COMMAND
Definición,Intención y Motivación. En ocasiones es deseable enviar solicitudes a objetos sin conocer exactamente la operación solicitada ni del receptor de la solicitud. Por ejemplo, un objeto botón o menú ejecuta solicitudes pero la solicitud no está implementada dentro del mismo. PATRON DE SOFTWARE: COMMAND
Definición,Intención y Motivación (Cont) La idea principal es tener una interfaz abstracta de manejo de operaciones sobre cierto receptor, permitiendo a un cliente desarrollar las operaciones sin tener que conocer exactamente el tipo y adicionalmente tener la capacidad de realizar tareas de UNDO (Deshacer). Este es un patrón de Diseño y también es conocido como de Acción (Action) o Transacción (Transaction) PATRON DE SOFTWARE: COMMAND
Aplicabilidad y Estructura Se puede utilizar el patrón command para: Parametrizar objetos por las acciones que realizan. Especificar, administrar y ejecutar solicitudes en tiempos distintos. El objeto Command tiene un tiempo de vida que es independiente de la solicitud del comando que lo instancia. PATRON DE SOFTWARE: COMMAND
Aplicabilidad y Estructura (Cont) Soporta la capacidad de deshacer la solicitud. el objeto Command puede guardar un estado que permita deshacer la ejecución del comando. Soporta la capacidad de generar bitácoras que permitan la recuperación del estado en caso de que el sistema falle. PATRON DE SOFTWARE: COMMAND
Aplicabilidad y Estructura (Cont) PATRON DE SOFTWARE: COMMAND
PATRON DE SOFTWARE: COMMAND Command :Declara la interface para la ejecucion de la operación ConcreteCommand Define la relación entre el objeto Receiver y una acción Implemeta Execute() al invocar las operaciones correspondientes en Receiver Client Crea un objeto ConcreteCommand y lo relaciona con su Receiver PATRON DE SOFTWARE: COMMAND
PATRON DE SOFTWARE: COMMAND Client Crea un objeto ConcreteCommand y lo relaciona con su Receiver Invoker Le hace solicitudes al objeto Command Receiver Sabe como ejecutar las operaciones asociadas a la solicitud. Cualquier clase puede ser receptora. PATRON DE SOFTWARE: COMMAND
PATRON DE SOFTWARE: COMMAND Consecuencias Command desliga el objeto invocador del objeto receptor Se pueden ensamblar comandos en comandos compuestos. Para un nuevo comando no se necesita extender las clases. PATRON DE SOFTWARE: COMMAND
PATRON DE SOFTWARE: COMMAND Ejemplo Que tan inteligente debe ser un comando?: Se debe considerar que un Command puede simplemente invocar a un receiver o puede realizar operaciones complejas que ningún otro objeto está en capacidad de realizar por si solo. PATRON DE SOFTWARE: COMMAND
PATRON DE SOFTWARE: COMMAND Ejemplo Soporte a la opcion deshacer y rehacer: Para implementar estas opciones el ConcreteCommand debe incluir información extra, pertinente al estado para así poder deshacer o rehacer una solicitud. PATRON DE SOFTWARE: COMMAND
PATRON DE SOFTWARE: COMMAND Ejemplo Evite la acumulación de errores en el proceso de deshacer: En la medida en que se hacen y deshacen operaciones es posible que el estado al que se llega diverga del estado original de los objetos. Es necesario que el ConcreteCommand contenga suficiente información para que sea capaz de hacer que los objetos vuelvan al estado original. PATRON DE SOFTWARE: COMMAND
PATRON DE SOFTWARE: COMMAND Ejemplo PATRON DE SOFTWARE: COMMAND
PATRON DE SOFTWARE: COMMAND Bibliografía CD - Design Patterns – GoF Departamento de Sistemas – Universidad de los Andes http://agamenon.uniandes.edu.co GAIA - Group for Artificial Intelligence Applications http://gaia.fdi.ucm.es/ PATRON DE SOFTWARE: COMMAND