Publica tu how-to

Dinos como hacer lo que sabes hacer, mándanos un email a wdonet@gmail.com y lo publicamos (dos días máximo) o si te interesa unirte al equipo de redactores, también háznoslo saber por correo.

Patron de Diseño Command

El patrón comando permite que solicitudes del cliente sean encapsuladas como objetos, indicar parámetros a diferentes solicitudes, encolarlas, registrarlas y hasta dar soporte para operaciones des-hacer.



Participantes:
  1. invocador (invoker) - el que almacena las ordenes y las manda ejecutar.
  2. cliente (client) - el que proporciona la orden al invocador.
  3. receptor (receiver) - aquél que en verdad realiza la acción que se mandó a ejecutar
  4. comando (command) -la orden que relaciona al invocador con el receptor de manera general
  5. comando concreto (concrete command) - la implementación para la ejecución de la orden (es más específica)

Ejemplo:
  • El consumidor (cliente) da órdenes (comandos) a un mesero (invocador), el cuál las apila para después pasarla al cocinero (ejecutar la acción).  El cocinero (receptor) entonces realiza la acción.
  • El usuario abre su programa favorito (cliente) , da clic sobre el contenedor de comandos llamado "menú Archivo" (invocador) y después sobre abrir archivo (comando), el cual abre una segunda ventana para indicarle de que archivo se trata (receptor). Cada opción del menú archivo ejecuta una acción que es un comando parametrizado.
Consecuencias:
El objeto que invoca el comando y el que lo realiza están des-acoplados. El invocador no tiene por que saber de que forma se ejecuta la acción.
Los objetos comandos se pueden extender usando patrones como Composite y Memento.
Es fácil agregar comandos porque no tienes que modificar las clases ya hechas.

Decisiones de diseño:
  • Cuando quieras parametrizar objetos que realicen una acción determinada
  • Cuando necesites encolar y ejecutar una serie de solicitudes en diferentes momentos
  • Si deseas mantener un historial de ejecuciones para así permitirte des-hacerlas, también es sencillo logear cada proceso de manera que si falla el sistema, se pueda saber en que punto quedó para una restauración manual.

No hay comentarios:

Publicar un comentario

Que opinas sobre esta publicación?