Command em Go
O Command é um padrão de projeto comportamental que converte solicitações ou operações simples em objetos.
A conversão permite a execução adiada ou remota de comandos, armazenamento do histórico de comandos, etc.
Exemplo conceitual
Vejamos o padrão Command com o caso de uma TV. Uma TV pode ser LIGADA por:
- Botão LIGAR no controle remoto;
- Botão LIGAR na própria TV.
Podemos começar implementando o objeto de comando LIGAR com a TV como um receptor. Quando o método execute
é chamado neste comando, ele, por sua vez, chama a função TV.on
. A última parte é definir um invocador. Na verdade, teremos dois invocadores: o controle remoto e a própria TV. Ambos irão incorporar o objeto de comando LIGAR.
Observe como empacotamos a mesma solicitação em vários invocadores. Da mesma forma que podemos fazer com outros comandos. A vantagem de criar um objeto de comando separado é que separamos a lógica da IU da lógica do negócio subjacente. Não há necessidade de desenvolver handlers diferentes para cada um dos invocadores. O objeto de comando contém todas as informações de que precisa para ser executado. Portanto, também pode ser usado para uma execução atrasada.