Command
O padrão de projeto (Design Pattern) Command é um padrão comportamental cuja intenção é encapsular uma solicitação como um objeto e desta forma permitir que você parametrize clientes com diferentes solicitações, enfileire ou registre(log) solicitações e suporte operações que podem ser desfeitas.(GoF)
Podemos dizer que o padrão Command tem como função principal encapsular a invocações a objetos.
Classes/Objetos participantes do padrão:
1. Comando (Command): Declara uma interface para executar uma operação; Esta classe abstrata é a classe base para todos os objetos Command. A classe também define um método abstrato que é usado pelo Chamador para executar comandos.
2. ComandoConcreto (CommandConcret): Define uma vinculação entre um objeto Receptor e uma ação; Além de implementar o método Execute, ela contém todas as informações que são necessárias para executar corretamente a ação usando o objeto Receptor vinculado.
3. Cliente (Client) - Cria um objeto ComandoConcreto e define o seu receptor; É o consumidor das classes do padrão Command;
4. Chamador(Invoker) - Solicita ao comando para executar a requisição; Inicia a execução dos comandos;
5. Receptor(Receiver) - Conhece como executar as operações associadas com a execução do comando; Objetos receptores contém os métodos que são executados quando um ou mais comandos são invocados. Isso permite que a funcionalidade real seja realizada separadamente para as definições de comando.
Funcionamento
O padrão Command nos diz como criar “objetos de comando” que encapsula uma solicitação para fazer algo em um objeto específico.
Basicamente todos os objetos de Comando implementam a mesma interface, que consiste em um único método normalmente chamado de execute(). Segue abaixo um exemplo desta implementação.
Listagem 1: Exemplo de implementação da interface do Padrão Command public interface Command {
public void execute();
}
O Padrão Command tem como definição encapsular uma solicitação