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 ?
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 ?
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.