viernes, 29 de mayo de 2009

Command

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.

No hay comentarios:

Publicar un comentario