Como instalar a Linguagem ELIXIR no Linux.
Elixir é uma linguagem de programação dinâmica e funcional, desenvolvida por José Valim em 2011, projetada para construir aplicações escaláveis... Leia mais
Desenvolvedor de Software
Quando desenvolvemos software, é comum encontrar situações onde diferentes comportamentos precisam ser aplicados a objetos semelhantes. A abordagem tradicional de implementar todos esses comportamentos diretamente na classe pode tornar o código confuso e difícil de manter. É aí que entra o Padrão Strategy.
O Padrão Strategy é um padrão de design comportamental que permite definir uma família de algoritmos ou comportamentos, encapsulá-los em classes separadas e torná-los intercambiáveis. Com o Strategy, movemos a responsabilidade de decidir qual comportamento aplicar para fora da classe principal. Dessa forma, podemos modificar ou estender o comportamento sem alterar o código original da classe.
Imagine que estamos desenvolvendo um sistema de pagamento para uma loja online. O cliente pode escolher diferentes métodos de pagamento, como cartão de crédito, PayPal ou boleto. Em vez de implementar cada método de pagamento diretamente na classe Pedido
, podemos aplicar o Padrão Strategy para gerenciar esses comportamentos.
Primeiro, criamos uma interface que todas as estratégias de pagamento irão implementar:
<?php
interface MetodoPagamento
{
public function pagar(float $valor);
}
Agora, podemos criar diferentes estratégias para os métodos de pagamento:
<?php
class PagamentoCartaoCredito implements MetodoPagamento
{
public function pagar(float $valor)
{
echo "Pagamento de R$ {$valor} realizado com cartão de crédito.\n";
}
}
class PagamentoPayPal implements MetodoPagamento
{
public function pagar(float $valor)
{
echo "Pagamento de R$ {$valor} realizado via PayPal.\n";
}
}
class PagamentoBoleto implements MetodoPagamento
{
public function pagar(float $valor)
{
echo "Pagamento de R$ {$valor} realizado via boleto bancário.\n";
}
}
Cada uma dessas classes implementa a interface MetodoPagamento
e possui sua própria lógica para processar o pagamento.
Agora, a classe Pedido
pode aceitar qualquer estratégia de pagamento e delegar a responsabilidade de processar o pagamento para a estratégia escolhida:
<?php
class Pedido
{
private $metodoPagamento;
public function __construct(MetodoPagamento $metodoPagamento)
{
$this->metodoPagamento = $metodoPagamento;
}
public function processarPagamento(float $valor)
{
$this->metodoPagamento->pagar($valor);
}
}
A classe Pedido
é simples, e seu único trabalho é delegar o processo de pagamento para o método escolhido, mantendo o código mais limpo e flexível.
Com as classes prontas, podemos criar um pedido e definir a estratégia de pagamento que desejamos usar:
<?php
// O cliente escolhe pagar com cartão de crédito
$pedido = new Pedido(new PagamentoCartaoCredito());
$pedido->processarPagamento(150.00);
// O cliente escolhe pagar via PayPal
$pedido = new Pedido(new PagamentoPayPal());
$pedido->processarPagamento(250.00);
// O cliente escolhe pagar com boleto
$pedido = new Pedido(new PagamentoBoleto());
$pedido->processarPagamento(300.00);
Cada vez que o cliente realiza uma compra, a classe Pedido
delega o processo de pagamento para a estratégia correta, sem a necessidade de modificar o código da classe. Se um novo método de pagamento for adicionado, como Pix, basta criar uma nova estratégia sem alterar as classes existentes.
if/else
ou switch
, o Strategy permite selecionar o comportamento dinamicamente através de polimorfismo.O Padrão Strategy é útil quando:
O Padrão Strategy é uma ótima solução quando queremos flexibilidade no comportamento dos objetos, especialmente quando esse comportamento pode variar ou evoluir ao longo do tempo. Ao aplicar esse padrão, mantemos nosso código organizado e fácil de estender. No contexto de desenvolvimento PHP, o Strategy pode ser extremamente útil para lidar com diferentes cenários onde algoritmos ou comportamentos precisam ser dinâmicos e intercambiáveis.
Elixir é uma linguagem de programação dinâmica e funcional, desenvolvida por José Valim em 2011, projetada para construir aplicações escaláveis... Leia mais
Ao trabalhar com imagens base64 no front-end, é comum precisar redimensioná-las para melhorar o desempenho da aplicação, especialmente ao enviá-las... Leia mais
No desenvolvimento de aplicações web, a paginação de dados é um recurso fundamental quando se trabalha com grandes volumes de... Leia mais
Ao termos de criar comandos personalizados no Symfony na maioria das vezes se faz necessário o uso de alguma interação... Leia mais