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.

Patrón 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 - el que almacena las ordenes y las manda ejecutar.
  2. cliente - el que proporciona la orden al invocador.
  3. receptor - aquél que en verdad realiza la acción que se mandó a ejecutar
  4. comando -la orden que relaciona al invocador con el receptor de manera general
  5. comando concreto - 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.

2 comentarios:

  1. hola para todos, esta muy bueno esta informacion me hizo entender como trabaja este patron,cosa q en otros sitios web no pude entender, les felicito pero tambien les digo q para mejorar esta informacion seria bueno q pusieran un ejemplo de implementacion por ejemplo en java.

    ResponderEliminar
  2. Muy buena explicación amigo, gracias a esto entendí el patrón. Realicé un proyecto con el ejemplo del restaurante que redactaste si te sirve para el blog puedo enviártelo.

    ResponderEliminar

Que opinas sobre esta publicación?