Com base nas características do padrão Command, qual das alternativas abaixo descreve corretamente a responsabilidade de cada componente?
- A)O Command encapsula uma ação como um objeto, o Invoker armazena os comandos a serem executados, e o Receiver realiza a ação quando solicitado pelo Command.
Correta: descreve exatamente o padrão Command, com o comando encapsulando a ação, o invoker disparando e o receiver executando.
- B)O Receiver encapsula o comando como um objeto, o Invoker define o que o comando deve fazer, e o Command executa a ação no Receiver.
Errada: inverte os papéis, pois o Receiver não encapsula o comando e o Invoker não define a lógica da ação.
- C)O Command executa diretamente a ação no sistema, o Invoker cria o comando, e o Receiver define qual ação o Command deve executar.
Errada: o Command não executa diretamente no sistema nem o Invoker cria o comando como regra do padrão.
- D)O Invoker cria uma fila de comandos, o Receiver encapsula a ação, e o Command armazena o histórico de comandos.
Errada: mistura responsabilidades que não pertencem ao Command, como o Receiver encapsular a ação e o Command guardar histórico.
Gabarito: A
O padrão Command é aquele que separa quem pede uma ação de quem realmente executa essa ação. Em vez de o objeto que dispara a operação saber todos os detalhes do trabalho, ele apenas aciona um comando. Isso deixa o sistema mais organizado, flexível e fácil de estender, principalmente quando existem várias ações possíveis, como salvar, desfazer, imprimir ou enviar. Na prática, o Command encapsula uma solicitação como um objeto. O Invoker é quem dispara o comando, mas não precisa conhecer a lógica interna da execução. Já o Receiver é quem faz o serviço de fato, ou seja, executa a ação concreta quando o comando é chamado. Essa divisão é clássica na literatura de padrões de projeto, especialmente no catálogo GoF (Gang of Four). Por isso, a alternativa A está correta: ela descreve exatamente essa separação de responsabilidades. O Command guarda a ação, o Invoker armazena e chama o comando, e o Receiver realiza o trabalho solicitado. É o tipo de padrão que parece simples, mas salva a arquitetura quando o sistema começa a ganhar muitos botões e muitos caminhos possíveis. As demais alternativas trocam os papéis dos participantes ou inventam responsabilidades que não são típicas do Command, como o Invoker definir a lógica da ação ou o Receiver encapsular comandos. Em prova, isso costuma aparecer como confusão entre quem solicita, quem intermedia e quem executa.