A Fábrica de Arquitetos  I -  Facade Pattern



...

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.