Propósito
Encapsula un comando dentro de un objeto de manera que pueda ser almacenado, pasado como parámetro a métodos y devuelto al igual que cualquier otro objeto.
Aplicabilidad
Use el patrón Command cuando se necesita poner en cola y ejecutar diferentes comandos en momentos distintos, cuando sea requerido dar soporte para deshacer comandos, transacciones y procesos de identificación, cuando desea desacoplar la fuente de una petición de un objeto que la cumple cierta función.
Implementación
El patrón Command necesita de los siguientes elementos:
• Command: la interfaz en la que se definen los métodos utilizados por el Invoker usado.
• Invoker: El invocador del método execute del objeto Command.
• Receiver: El objetivo del Command que cumple la petición, contiene toda la información necesaria para ello.
• ConcreteCommand: Implementación de la interfaz Command. Mantiene una referencia al receptor Receiver.
Ventajas e Inconvenientes
Command es muy flexible en el sentido de que desacopla el disparador del evento del objeto que posee las herramientas y el conocimiento para ejecutarlo, facilita la introducción de nuevos comandos (hacer otra implementación y meterla a la aplicación), coopera con diversos objetos para compartir instancias de Command y también tiene la posibilidad de sustituir objetos Command o Receiver en período de ejecución.
Patrones Relacionados
• Composite: Usa Composite para implementar MacroCommand.
• Memento: Almacena el estado del objeto que recibe el comando para poder tolerar la función de deshacer este comando.
• Prototype: Es utilizado para duplicar el comando antes de archivarlo en el historial.
• Singleton: El historial comúnmente se implementa como un Singleton.
viernes, 29 de mayo de 2009
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario