Patrones Comportamiento_Command


Patrón Command


El objetivo de este patrón es encapsular una petición en un objeto para tener un control más fino sobre la petición. Se le conoce también como: Action, Transaction, Orden.
Motivación

La necesidad de un paquete de herramienta de interfaz de usuarios con botones, menús sin saber que van a hacer en la aplicación Solución: encapsula la petición en un objeto como una orden – la clave es una clase abstracta Orden que tenga una interfaz para ejecutar operaciones.

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 la(s) correspondiente(s) operación(es) del “Receiver”.
Client: Crea un objeto “ConcreteCommand” y establece su receptor.
Receiver: sabe como llevar a cabo las operaciones asociadas a una petición. Cualquier clase puede hacer actuar como “Receiver”.
Invoker: le pide a la orden que ejecute la petición.
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: Ofrece una forma alternativa de llamar a los órdenes además del uso del command manager.
Intérprete: Se puede implementar un pequeño Intérprete mediante clases Command.
Template Method: Sirve para implementar la lógica de “Deshacer” de forma automática.
Composite y Prototype: Permite realizar agrupaciones de órdenes de forma similar a una macro. Hay quien lo utiliza para implementar la copia de la orden al histórico de órdenes.

No hay comentarios:

Publicar un comentario