Recursão com a Torre de Hanoi em PHP
Recursão é um conceito essencial em programação que se refere a uma função que se chama a si mesma dentro... Leia mais
Desenvolvedor de Software
O Design Pattern Facade é uma solução elegante para simplificar a interface de um subsistema complexo, tornando-o mais fácil de usar. Ele atua como uma fachada que esconde a complexidade de classes e interações internas, oferecendo uma interface simplificada para o cliente. Vamos explorar este padrão em PHP com exemplos práticos e sem a necessidade de bibliotecas externas.
Imagine que estamos desenvolvendo um sistema de pedidos online. Ele envolve diferentes partes: processamento de pagamento, estoque e envio. Sem o Facade, o cliente precisaria interagir diretamente com cada uma dessas partes.
Vamos criar um exemplo de como seria sem o Facade, e depois aplicaremos o padrão para simplificar a interação.
class Estoque {
public function diminuirEstoque($produtoId, $quantidade) {
echo "Estoque reduzido para o produto $produtoId em $quantidade unidades.\n";
}
}
class Pagamento {
public function processarPagamento($valor) {
echo "Pagamento de R$$valor processado com sucesso.\n";
}
}
class Envio {
public function enviarProduto($produtoId) {
echo "Produto $produtoId enviado.\n";
}
}
// Cliente precisando lidar com tudo
$estoque = new Estoque();
$pagamento = new Pagamento();
$envio = new Envio();
// Fluxo de pedido
$estoque->diminuirEstoque(101, 2);
$pagamento->processarPagamento(150);
$envio->enviarProduto(101);
Neste exemplo, o cliente precisa conhecer e interagir diretamente com as classes Estoque
, Pagamento
e Envio
, o que pode tornar o código difícil de gerenciar à medida que o sistema cresce.
Agora, vamos criar uma classe PedidoFacade
para simplificar a interação.
class PedidoFacade {
protected $estoque;
protected $pagamento;
protected $envio;
public function __construct() {
$this->estoque = new Estoque();
$this->pagamento = new Pagamento();
$this->envio = new Envio();
}
public function processarPedido($produtoId, $quantidade, $valor) {
$this->estoque->diminuirEstoque($produtoId, $quantidade);
$this->pagamento->processarPagamento($valor);
$this->envio->enviarProduto($produtoId);
}
}
// Cliente agora só interage com o Facade
$pedidoFacade = new PedidoFacade();
$pedidoFacade->processarPedido(101, 2, 150);
Agora, o cliente precisa interagir apenas com o PedidoFacade
, que esconde a complexidade do sistema. Isso torna o código mais limpo e fácil de manter.
PedidoFacade
): A classe PedidoFacade
age como uma “fachada” para o subsistema de pedidos. Ela conhece os objetos internos (Estoque
, Pagamento
, Envio
), mas o cliente não precisa se preocupar com eles.Estoque
, Pagamento
e Envio
formam o subsistema que executa o trabalho real. Elas permanecem desacopladas e focadas em suas responsabilidades específicas.Facade
.O padrão Facade é uma maneira eficaz de ocultar a complexidade de sistemas com múltiplas classes e responsabilidades, simplificando a interação para o cliente. Neste exemplo em PHP, criamos um sistema de pedidos onde o cliente interage com uma única classe (PedidoFacade
), deixando todo o trabalho pesado para o subsistema. Este padrão ajuda a manter o código mais organizado e mais fácil de manter, especialmente em sistemas complexos.
Recursão é um conceito essencial em programação que se refere a uma função que se chama a si mesma dentro... Leia mais
PostgreSQL é um dos sistemas de gerenciamento de banco de dados mais populares, conhecido por sua robustez e recursos avançados.... Leia mais
Para criar uma nova branch a partir da branch develop usando o terminal com o Git, siga os seguintes passos:... Leia mais
A função WITH RECURSIVE no PostgreSQL é uma ferramenta poderosa para a execução de consultas recursivas em bancos de dados.... Leia mais