Command encapsula una petición en un objeto, pudiéndo realizar operaciones como crear una cola de objetos, gestionarla y poder deshacer las operaciones.
Nombre:
Command.
También conocido como:
Action, Transaction.
Propósito:
Especifica una forma simple de separar la ejecución de un comando del entorno que generó dicho comando.
Aplicabilidad:
Este patrón se utiliza generalmente cuando se desea:
· Facilitar la parametrización de las acciones a realizar.
· Independizar el momento de petición del momento de ejecución.
· Implementar CallBacks. El parámetro de una orden puede ser otra orden a ejecutar.
· Soportar o permitir el "deshacer".
· Desarrollar sistemas utilizando órdenes de alto nivel que se construyen con operaciones sencillas (primitivas).
Estructura:

Participantes:
· Command: Declara una interfaz para ejecutar una operación.
· ConcreteCommand: Define un enlace entre un objeto “Receiver” y una acción. Implementa “Execute” invocando las correspondientes operaciónes del “Receiver”.
· Invoker: Le pide a la orden que ejecute la petición.
· Receiver: Sabe como llevar a cabo las operaciones asociadas a una petición. Cualquier clase puede actuar como “Receiver”.
· Client: Crea un objeto “ConcreteCommand” y establece su receptor.
Consecuencias:
· Comando desacopla a los objetos que invocan la operación del objeto que sabe como realizarla.
· Los comandos pueden ser extendidos.
· Es fácil agregar nuevos comandos porque no hay que cambiar las clases existentes.
Patrones relacionados:
· Factory Method.
· Intérprete.
· Template Method.
· Composite.
· Prototype.
Etiquetas: Behavioral Patterns, Command, Patrones de Comportamiento