
Onde aprender React ?
Vamos lá! Em um dia qualquer estava eu a rolar o feed do Linked-In e um determinado post me chamou... 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.
Vamos lá! Em um dia qualquer estava eu a rolar o feed do Linked-In e um determinado post me chamou... Leia mais
Neste tutorial, vamos aprender como exportar uma lista de cadastros de clientes para uma planilha Excel, incluindo as fotos dos... Leia mais
Quando se trata de gerenciar bancos de dados, o PostgreSQL se destaca como uma escolha robusta e flexível para desenvolvedores... 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