Command en Go
Command es un patrón de diseño de comportamiento que convierte solicitudes u operaciones simples en objetos.
La conversión permite la ejecución diferida de comandos, el almacenamiento del historial de comandos, etc.
Ejemplo conceptual
Veamos el patrón Command con el caso de un televisor. Un televisor puede encenderse de dos maneras:
- Con el botón ON del mando;
- Con el botón ON del propio televisor.
Podemos comenzar implementando el objeto comando ON con el televisor como receptor. Cuando se invoca el método execute
en este comando, éste, por su parte, invoca la función TV.on
. La última parte consiste en definir un invocador. Tendremos dos invocadores: el mando y el propio televisor. Ambos integrarán el objeto comando ON.
Observa cómo hemos envuelto la misma solicitud en varios invocadores. Podemos hacer lo mismo con otros comandos. La ventaja de crear un objeto comando separado es que desacoplamos la lógica UI de la lógica de negocio subyacente. No es necesario desarrollar distintos manejadores para cada uno de los invocadores. El objeto comando contiene toda la información que necesita ejecutar. Por lo tanto, también puede utilizarse para una ejecución retardada.