PATRÓN
COMMAND
EMMANUEL MARTINEZ SIERRA
QUE ES?
El patrón de diseño Command nos permite ejecutar operaciones sin
conocer los detalles de la implementación de la misma.
Las operaciones son conocidas como comandos y cada operación es
implementada como una clase independiente que realiza una acción muy
concreta, para lo cual, puede o no recibir parámetros para realizar su
tarea.
El patrón Command ofrece una serie de ventajas significativas en cuanto
a flexibilidad, mantenibilidad y reusabilidad del código.
Imagen 1. Ejemplo patrón Command. Tomado de [Link]
CUANDO USARLO
Cuando es necesario encapsular Cuando es necesario realizar
los detalles de ejecución de una aplicaciones que trabajan con
serie de operaciones bajo una operaciones de alto nivel, donde
única interface. cada operación deberá ser
implementada de forma simple e
independiente.
ESTRUCTURA
Imagen 2. Estructura del patrón de diseño Command. Tomado de Introducción a los Patrones de Diseño.
Imagen 3. Diagrama de secuencia del patrón de diseño Command. Tomado de Introducción a los
Patrones de Diseño.
Imagen 4. Implementación sin utilizar el patrón Imagen 5. Ejecución utilizando el patrón Comando.
Command. Tomado de Introducción a los Patrones Tomado de Introducción a los Patrones de Diseño.
de Diseño.
EJEMPLO
Se diseñó un programa mediante el cual
crearemos un documento de texto, el programa
tendrá los siguientes comandos para realizar la
edición del documento:
● CreateTextCommand Crea el documento
● AppendTextCommand Inserta nuevo texto
● MakeBoldCommand Convierte el texto en negrita
● ResetTextCommand Vuelve todos los campos a sus
valores iniciales
Imagen 6. Diagrama de clases de clases del ejemplo de Command. Del autor.
EJEMPLO
Se desarrolló un programa la cual ejecuta los
siguientes comandos
● Exit Cierra el programa.
● MEMORY Muestra información de la memoria.
● ECHO Devuelve el mensaje enviado.
● Date Muestra la fecha en varios formatos.
● File Interactúa con los archivos.
● Dir Interactúa con los directorios.
● Batch Ejecuta los comandos en un archivo.
● Waihello Devuelve una “Hello!!” tras un tiempo determinado.
ESTRUCTURA
Imagen 7. Jerarquía de clases del proyecto
Command. Tomado de Introducción a los
Patrones de Diseño.
Imagen 8. Diagrama de clases del proyecto Command. Tomado de
Introducción a los Patrones de Diseño.
PATRONES RELACIONADOS
Se puede usar el patrón Composite para implementar OrdenMacro.
Un Memento puede mantener el estado que necesitan las órdenes para
anular sus efectos.
Una orden que debe ser copiada antes de ser guardada en el historial
funciona como un Prototipo.
VENTAJAS DESVENTAJAS
● Desacoplamiento. ● Aumento de la complejidad.
● Encapsulación. ● Overhead.
● Historial de comandos. ● Dificultad para deshacer
operaciones complejas.
● Parametrización.
● Problemas de concurrencia.
● Mejora la testabilidad.
● Inflexibilidad.
● Mejora la reutilización. ● Aumento del tamaño del
código.
REFERENCIAS
BLANCARTE. OSCAR, INTRODUCCIÓN A LOS PATRONES DE DISEÑO,
2016.
Refactoring Guru, Command
[Link]
GAMMA. ERICH, PATRONES DE DISEÑO, 2002.
BELMONTE, OSCAR, UNIVERSITAT JAUME I. Programación Avanzada,
Patrones de diseño, El patrón de diseño Acción (Command),
[Link]
zada/Tema2/[Link]