Patrones de diseño de software: Comando

El patrón comando es un patrón de diseño de comportamiento que convierte una solicitud en un objeto independiente que contiene toda la información sobre la solicitud. Esta transformación te permite pasar solicitudes como argumentos de método, retrasar o poner en cola la ejecución de una solicitud y admitir operaciones que se pueden deshacer.

¿Qué problema resuelve el patrón comando?

El patrón comando resuelve, por ejemplo, el problema de múltiples botones en tu aplicación editor de texto. Gracias a este patrón puedes tener los botones sin la necesidad de múltiples subclases de controladores de clic y código repetido.

El patrón Comando sugiere que los objetos no deben enviar solicitudes directamente, sino extraer todos los detalles de una solicitud, el objeto al que se llama, el nombre del método y la lista de argumentos en una clase de comando separada con un solo método que activa esta solicitud.

Los objetos de comando sirven como enlaces entre los diferentes botones y objetos de la lógica de negocio. Después, el botón u otro elemento no necesita saber qué objeto de lógica de negocio recibirá la solicitud y cómo se procesará. La capa de lógica de negocio se accede a través de un comando.

¿Cuándo usar el patrón comando?

Deberías usar patrón Comando cuando quieras parametrizar objetos con operaciones. Este patrón puede convertir una llamada de método específico en un objeto independiente. De esta manera puedes pasar comandos como argumentos de método, almacenarlos dentro de otros objetos, o cambiar comandos vinculados en tiempo de ejecución.

También podrías utilizar el patrón comando si deseas poner en cola operaciones, programar su ejecución o ejecutarlas de forma remota. Un comando se puede serializar, lo que significa convertirlo en una cadena que se puede escribir fácilmente en un archivo o una base de datos. La cadena se podría restaurar como el objeto de comando inicial.

Y por último, podrías utilizar el patrón comando para implementar operaciones reversibles. El patrón comando es la forma más popular de implementar deshacer/rehacer.

Pros y contras del patrón comando

Los siguientes son algunos de los “pros y cons” de este patrón.

Pros

Contras

  • Principio de responsabilidad única. Puedes desacoplar las clases que invocan operaciones de las clases que realizan estas operaciones.

  • Principio abierto/cerrado. Puedes introducir nuevos comandos en la aplicación sin romper el código de cliente existente. 

  • Puedes implementar deshacer/rehacer

  • Puedes implementar la ejecución diferida de operaciones

  • Puedes ensamblar un conjunto de comandos simples en uno complejo

  • El código puede volverse más complicado ya que estás introduciendo una capa completamente nueva entre remitentes y receptores. 

“Show me the code”

Si quieres tener una mejor idea de cómo se ve este patrón, puedes ver este ejemplo de refacoring.guru en PHP.

En el ejemplo del mundo real, podrás ver cómo se usa el patrón comando para poner en cola las llamadas de web scraping al sitio web de IMBD y ejecutarlas una por una. La cola se mantiene en una base de datos que ayuda a conservar los comandos entre los lanzamientos de scripts.

¿Utilizas el patrón Comando en tus proyectos? ¿Qué tal la experiencia? ¡Coméntalo abajo!

Fuente: