Você está na página 1de 11

Plantilla GoF

(Command)
Nombre: Command Nombre Alternativo: Transaccin ,Accin. Propsito: 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 realizar tareas de deshacer.

Motivacin: A veces se quiere poder enviar solicitudes a


objetos sin conocer exactamente la operacin solicitada ni del receptor de la solicitud. En general un objeto botn o men ejecuta solicitudes pero la solicitud no est implementada dentro del mismo

Estructura

Aplicabilidad: Utilice 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. Soporta la capacidad de deshacer la solicitud. el objeto Command puede guardar un estado que permita deshacer la ejecucin del comando.

Soporta la capacidad de generar bitcoras que permitan la recuperacin del estado en caso de que el sistema falle. Permite estructurar un sistema en torno a operaciones de alto nivel construidas con base en operaciones primitivas o de bajo nivel.

Participantes:
Cliente: El cliente es responsable de crear el objeto Command y el establecimiento es el receptor. Invocador: El Invocador acta como un marcador de posicin para el objeto de comando e invoca el mtodo de ejecucin en el comando. En el caso de los comandos de deshacer, que almacena el comando en una pila (Para mltiples niveles de deshacer, o simplemente el comando para deshacer un solo nivel), antes de ejecutar el comando.

Receptor: El objeto que realiza las operaciones asociadas a la realizacin de una peticin. Toda clase puede servir como un receptor. Comando: El objeto de comando representa la operacin de solicitud. El comando implementa mtodo execute (), que invoca las operaciones correspondientes en el receptor. Esto define un enlace entre un objeto receptor y una accin.

Consecuencias:
Command desliga el objeto invocador del objeto receptor Los comandos son objetos de primera clase. Se pueden ensamblar comandos en comandos compuestos. Para un nuevo comando no se necesita extender las clases.

Colaboracin: Un cliente crea un objeto Command. El objeto Invoker guarda el objeto Command . El objeto Invoker solicita al llamar Execute() de Command. El objeto Command invoca las operaciones necesarias para resolver la solicitud.

Usos conocidos:
Para la asignacin de solicitudes en Mens y Botones, y cuando se requiera implementar la capacidad de deshacer solicitudes.

Implementacin
1.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 ningn otro objeto est en capacidad de realizar por si solo. 2.Soporte a la opcion deshacer y rehacer: para implementar estas opciones el Command debe incluir informacin extra, pertinente al estado para as poder deshacer o rehacer una solicitud.

3.Evite la acumulacin 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 informacin para que sea capaz de hacer que los objetos vuelvan al estado original.

Cdigo de ejemplo
Archivo

Patrones relacionados
COMPOSITE, permite tratar objetos complejos como si fueran objetos simples; MEMENTO, Permite volver a estados anteriores del sistema; PROTOTYPE, Crea nuevos objetos clonndolos de una instancia ya existente.

Você também pode gostar