019 – Padrão de Projeto COMMAND

Playlist do Curso de Padrão de Projeto de Software (Design Patterns)

Command é um dos 11 padrões comportamentais dentre os 23 padrões de projeto de software do GOF. Na programação orientada a objeto, o command é um padrão no qual um objeto é usado para encapsular toda informação necessária para executar uma ação ou acionar um evento em um momento posterior.

Objetivo
O Padrão Command tem como definição encapsular uma solicitação como um objeto, o que lhe permite parametrizar outros objetos com diferentes solicitações, enfileirar ou registrar solicitações e implementar recursos de cancelamento de operações. Isso inclui informações como o nome do método, o objeto que o método pertence e os valores dos parâmetros do método.

Estrutura
Estrutura-command
A classe aplicação cria um comando concreto e configura o receiver para que este possa executá-lo. A classe Receiver, que pode ser qualquer classe na aplicação, sabe como executar o trabalho necessário. ConcreteCommand é responsável por manter um vínculo entra uma ação (método action()) e um objeto da classe Receiver. Assim, um objeto Invoker invoca o método execute() e ConcreteCommand realiza uma ou mais ações no objeto Receiver. O papel do Command, que pode ser uma interface ou classe abstrata, é o de disponibilizar uma interface comum a todas as classes concretas que a implementam.

Implementação
Considere um “simples” interruptor. Nesse exemplo vamos configurar o interruptor (Switch) com duas funções: ligar e desligar a luz.

Um benefício em particular da implementação do command pattern é que o interruptor pode ser usado em qualquer dispositivo, não somente uma luz – no próximo exemplo, o Switch liga e desliga a luz, mas o construtor do Switch aceita qualquer subclasse de Command para seus dois parametros. Por exemplo, você pode configurar o Switch (interruptor) para ligar um motor.