1
resposta

Diferença entre strategy e command

Não consegui visualizar a diferença concreta entre os padrões strategy e command, ainda mais em código parece a mesma coisa, pode me ajudar ?

1 resposta

Oi Gabriel, tudo bem?

Os padrões de projeto Strategy e Command podem parecer semelhantes à primeira vista. No entanto, eles possuem propósitos diferentes e são aplicados em contextos distintos.

O padrão de projeto Command é usado para encapsular uma solicitação como um objeto, permitindo parametrizar clientes com diferentes solicitações, enfileirar solicitações, registrar o log de solicitações e até mesmo desfazer as operações. Ele separa o remetente (quem faz a solicitação) do receptor (quem executa a ação), permitindo flexibilidade em adicionar novos comandos e mantendo o acoplamento baixo. Um exemplo prático disso é um sistema de controle remoto, onde cada botão é um comando encapsulado. Por exemplo, temos um comando "TVOnCommand" que possui um método "execute" que liga a TV.

Já o padrão de projeto Strategy é usado para definir uma família de algoritmos, encapsulá-los e torná-los intercambiáveis. Isso permite que os algoritmos variem independentemente dos clientes que os usam. É particularmente útil quando você tem várias estratégias ou formas de realizar uma tarefa e deseja escolher dinamicamente a estratégia correta. Um exemplo prático disso é um sistema de pagamentos, onde cada forma de pagamento é uma estratégia encapsulada. Por exemplo, temos uma estratégia "CreditCardPayment" que possui um método "pay" para processar o pagamento com cartão de crédito.

Então o Command é usado para encapsular solicitações como objetos e permitir controle e gerenciamento de ações, o Strategy é usado para definir algoritmos intercambiáveis e permitir a escolha da estratégia correta em tempo de execução.

Espero ter ajudado a esclarecer a diferença entre esses dois padrões de projeto.

Um abraço e bons estudos.