Design Pattern Facade: definição e exemplo de implementação
Emanuelly Leoncio. Os padrões de projeto (ou design patterns) são ferramentas úteis para sistemas orientados a objetos. A sua aplicação visa reutilizar soluções padronizadas de software em problemas rotineiros.
Um dos 23 padrões documentados no livro "Design Patterns: Elements of Reusable Object-Oriented Software" trata-se do Padrão de Projeto Facade. Neste artigo iremos detalhar mais sobre ele.
Facade
O Facade é um dos mais populares padrões de projeto. Como o próprio nome já indica, trata-se de uma “fachada”, no qual um objeto será criado para facilitar o uso de um sistema complexo. O Facade é um padrão do tipo estrutural, ou seja, é utilizado para criar outras estruturas a partir dele. Assim, permite organizar de forma estruturada as classes e objetos do sistema.
Apesar do Facade ter como característica o encapsulamento, ele não olha apenas para uma classe, que é o mais comum. Ele consegue abstrair a complexidade de um módulo por completo, criando uma interface mais simplificada para ser usada.
Visão estrutural do Facade
O facade acessa uma parte específica no sistema, conforme a solicitação do cliente. Os subsistemas ficam “ocultos”, e ele nos fornece uma interface mais simples para lidar. O módulo Cliente interage apenas com o método Facade, não sendo necessário saber sobre as interações realizadas “por debaixo dos panos”.
Exemplo de uso
Suponhamos que estamos desenvolvendo um sistema de delivery de produtos de petshop online. O fluxo desde a escolha até o recebimento do produto se dá por:
- Início da venda;
- Processamento do carrinho de compras;
- Atualização do estoque da loja;
- Preparação do envio dos produtos;
- Envio dos produtos para o cliente.
Assim, temos 5 diferentes serviços que são executados em um processo de compra completo. O cliente está vinculado a todos estes microserviços, o que aumenta a complexidade do sistema.
Desta forma, o facade é aplicado como uma solução para abstrair nosso sistema e torná-lo mais flexível.
Aplicação
Implementando o facade para o nosso sistema de delivery de produtos de petshop, temos o seguinte código:
Subsistemas.php
Facade.php
Conclusão
O facade é um padrão de projeto simples de ser implementado. Devido à sua estrutura organizada, tem um fácil entendimento sobre quais são as funcionalidades do sistema em questão.
Outra vantagem é a flexibilidade em relação a mudanças. Caso seja preciso alterar algum subsistema, somente uma classe é modificada.
A Revelo Content Network acolhe todas as raças, etnias, nacionalidades, credos, gêneros, orientações, pontos de vista e ideologias, desde que promovam diversidade, equidade, inclusão e crescimento na carreira dos profissionais de tecnologia.