Encapsula una peticion en un objeto, permitiendo asi parametrizar a los clientes con distintas peticiones, encolar o llevar un registro de las peticiones y poder deshacer las operaciones.
Nombre del Patron:
Command (Comando).
Clasificacion del Patron:
Patron de Comportamiento.
Intencion:
Encapsular un comando en un objeto de tal forma que pueda ser almacenado, pasado a metodos y devuelto igual que cualquier otro objeto.
Motivacion:
A veces se quiere poder enviar solicitudes a objetos sin conocer exactamente la operación solicitanda ni del receptor de la solicitud. En general un objeto botón o menú ejecuta solicitudes pero la solicitud no está implementada dentro del mismo.
Una biblioteca de clases para interfaces de usuario tendrá objetos como botones y elementos
de menú responsables de realizar alguna operación en respuesta a una entrada del usuario.
Estructura:
Participantes:
Command: Declara la interface para la ejecucion de la operacion.
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.
Invoker: Le hace solicitudes al objeto Command.
Receiver: Sabe como ejecutar las operaciones asociadas a la solicitud. Cualquier clase puede ser receptora.
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.
No hay comentarios:
Publicar un comentario