Falaaaaaa desenvolvedor, tudo bem? Espero que sim, pois eu estou super empolgado, no artigo de hoje darei início a série de artigos que vai abordar arquitetura de software e os padrões de projetos, no geral estarei mostrando de forma simples, objetiva e prática implementações e casos de uso dos 23 padrões de projetos documentados pelos grandes integrantes do GoF (Gang of Four).
No artigo anterior eu descrevi de forma simples o que são, como surgiu e o porquê de se utilizar os padrões de projetos e hoje vou demonstrar o primeiro dos 23, o Facade Pattern.
…
O que é?
Frequência de uso: 5/5 - Alto
O Facade Pattern (Fachada) é um padrão de projeto estrutural, e o objetivo dele é simplificar a complexidade de alguma parte do código.
Ele simplifica pegando uma parte complexa do código (chamada de sub sistema) e abstrai sua complexidade (chamadas de métodos e requisições são um exemplo) para uma classe de fachada, ou seja, ele “esconde” a complexidade do código dentro dessa classe de fachada, afinal, nós apenas precisamos dos seus recursos e não nos interessa a sua estrutura.
Beleza Lucas, esse pattern esconde a complexidade dos subsistemas disponibilizando um método único para execução de uma série de outros métodos ou processos, MAS QUAL A VANTAGEM DE TUDO ISSO?
Eu te digo jovem leitor, uma das principais vantagens de utilizar esse pattern é um total DESACOPLAMENTO do sistema, cada módulo deve obedecer ao Princípio da Responsabilidade Única, cada parte do sistema tem sua única responsabilidade e deve ser o independente de qualquer outra.
Outra grande e importante vantagem de utilizar esse pattern é que o CÓDIGO FICA LIMPO, afinal você está utilizando uma fachada para esconder as funcionalidades de cada módulo.
E a principal vantagem, é justamente a que eu mais gosto e prezo quando estou desenvolvendo, CÓDIGO PEQUENO E ORGANIZADO, esse pattern consegue diminuir o tamanho principal do código de forma que, se antes precisávamos chamar 5 métodos um atrás do outro, com esse padrão chamamos apenas 1 método que ira chamar os outros 5, por isso o nome de fachada hehe.
Showwwww! Agora que você já entendeu para que esse padrão serve e o que ele faz, vem aquela pergunta em mente,
QUANDO EU DEVO UTILIZAR ESSE PADRÃO?
Vamos lá, e muito recomendado utilizar esse padrão quando:
1 - Precisamos simplificar muitas operações;
2 - Facilitar a comunicação o usuário;
3 - Ter apenas a chamada de 1 método para executar uma série de outros métodos e funcionalidades;
4 - Construir um software utilizando Arquitetura em camadas.
Abaixo segue uma pequena ilustração de como esse padrão de projeto abstrai a complexidade do código através de uma fachada.
https://3.bp.blogspot.com/-YJgPbF3Jww8/Wy4yJfuy2fI/AAAAAAAAClk/wb8o-MPe1ugh-2JLaKwh_sL51M3Oj1GVwCLcBGAs/s1600/facade-design-pattern.PNG
...
Aplicando o pattern
Agora que já vimos como ele funciona e suas vantagens tá na hora de aplicar tudo isso em prática, vamos realizar o desenvolvimento de um simples aplicativo console que irá analisar se uma pessoa deve ou não se alistar no exército.
Para isso ele terá 3 “subsistemas”
1 - Irá verificar se é uma pessoa válida (nome com mais de 3 caracteres);
2 - Irá verificar se a pessoa é do sexo masculino;
3 - Irá verificar se a pessoa é maior de idade.
Em um programa SEM UTILIZAR esse padrão, precisaríamos, instanciar cada subsistema e chamar sua função específica.
Agora, UTILIZANDO O PADRÃO, vamos criar nossa classe de fachada que irá abstrair a chamada dos 3 métodos e nós só precisamos chamar essa classe.
Então vamos lá, crie um projeto console utilizando .NET Framework ou .NET Core com a seguinte estrutura:
Dentro da pasta Entities, nossa classe para o usuário que será analisado:
User.cs
Agora dentro da pasta Subsystem, crie as classes que irão ser chamadas para verificar se um usuário deve se alistar.
UserIsMaiority.cs
UserIsMan.cs
UserIsValid.cs
OBS: Eu sei que esses IFs poderiam ser feitos de muitas formas diferentes, mas lembre - se, é um artigo para iniciantes.
Tá ficando show, vamos criar nossa classe de fachada que irá abstrair a chamada desses 3 métodos para nós, dentro da pasta Facade, cria a seguinte classe:
E por fim vamos aplicar essa classe facade na execução do projeto.
Ficamos com a seguinte estrutura de projeto:
Agora perceba que, na execução do programa, não precisamos chamar diretamente os 3 métodos para verificar se o usuário deve ou não se alistar, a classe fachada abstrai isso de nós e precisamos apenas chamar ela.
O código fica muito mais limpo e o código principal fica desacoplado dos outros subsistemas deixando — o assim organizado.
Ao executar obtemos o seguinte resultado:
...
Conclusão
No primeiro artigo dessa série eu apresentei o pattern Facade, o porque e quando deve se utilizar esse padrão, tentei apresentar da forma mais clara e sucinta sua implementação em um simples exemplo, mas lembre-se, esse padrão pode e deve ser aplicado em qualquer projeto, não importando o seu porte, é um dos padrões mais simples e fácil de ser aplicado.
Enfim, é isso, até breve e bons estudos!!!
Baixe o projeto completo clicando aqui.
Caso precise entrar em contato, me mande uma mensagem aqui.