A Fábrica de Arquitetos VIII — Factory Pattern

Lucas Eschechola
4 min readJan 3, 2021

--

Falaaaaa desenvolvedor beleza??????? Hoje eu venho com mais um artigo da série “A Fábrica de Arquitetos”, e preparem-se! O artigo de hoje está rico em conteúdo, resolvi trazer o padrão que na minha opinião é o mais utilizado de todos!!!!

Nesse artigo vamos aprender a implementar o Factory Pattern o padrão que particularmente eu mais utilizo e que é útil em muitos cenários comuns.

Pegue sua xícara de café e bora codar!!!

O que é?

Frequência de uso: 5/5 - Alto

Como de praxe, antes de sairmos digitando código por aí vamos entender o que esse padrão faz e onde ele nos ajuda.

Como o próprio nome já diz, Factory significa fábrica e o que o Factory Pattern faz é nos prover uma interface que funciona como uma fábrica nos gerando instâncias de objetos!

Então imagine que você está trabalhando em um sistema que gera solicitações de socorro para acidentes.

Nesse sistema as solicitações de socorro são geradas de acordo com o tamanho do acidente (pequeno, médio, grande).

No momento de gerar a solicitação precisamos verificar o tamanho do acidente para poder criar o objeto Socorro, e por fim finalizo a requisição de socorro.

Pare agora e pense como você faria isso?

Certamente a maioria dos desenvolvedores que não conhecem o padrão Factory, iria implementar o mais obvio possível que é uma estrutura condicional seja ela qual for, mas e se você tivesse a mesma necessidade em diversos pontos do código? Iria replicar e criar um código “sujo”?

Bom, não está errado, mas existe uma forma mais elegante de fazer isso e é o que vamos fazer a seguir utilizando o Factory Pattern!

Vou deixar logo abaixo o UML do padrão.

Mãos no Código!

Chega de papo vamos botar a mão no código e aprender esse padrão!

Primeiro precisamos definir o tipo de acidente.

TipoAcidente.cs

Agora precisamos criar nosso objeto Acidente.

Acidente.cs

Beleza! vamos criar nosso objeto de socorro.

Socorro.cs

OBS: Socorro é a nossa classe base da factory, uma classe base não precisar ser exatamente assim em todas as factory’s, no final irei mostrar uma forma mais simples de implementar o padrão.

Show, agora vamos criar nossa factory.

SocorroFactory.cs

Aqui tem um ponto bem bacana a se destacar, perceba que ao invés de fazer diversos If’s ou implementar o Switch no meio do processo de gerar a solicitação de socorro, criamos uma fábrica que já irá retornar uma instância de socorro para a gente.

Por fim precisamos dos objetos de socorro.

SocorroAcidenteGrande.cs

SocorroAcidenteMedio.cs

SocorroAcidentePequeno.cs

Bom, nessas últimas 3 classes poderia ter algum tipo de processamento ou solicitação a algum órgão de ajuda, isso varia de acordo com o sistema, mas o objetivo do padrão foi atingido.

Ah! Não podemos esquecer de executar nosso padrão.

Program.cs

Perceba que agora só precisamos chamar nossa factory e ela já nos retorna a instância de Socorro de acordo com o tamanho do acidente! Ai só basta nós chamarmos o método Socorrer() e voilá!!!

Uma forma mais simples!

“Ahhh Lucas, preciso realmente de toda essa complexidade ou todo esse cenário para ter uma real necessidade implementar o Factory Pattern?”

NÃÃÃÃOOOOOOO!!!!

O Factory Pattern pode estar presente até em cenários mais simples, lembre-se o objetivo dos padrões de projetos em geral e ser uma solução elegante e limpa para um problema comum no processo de desenvolvimento.

Vou mostrar outro cenário bem mais simples onde o Factory Pattern pode ser implementado.

Imagine que você precisa de uma determinada string dado uma condição em algum momento do código, como já dito, poderia ser usado diversos If’s ou o switch no meio do código, agora lembre-se e se você precisa-se colocar essa mesma condição em outros pontos? Iria replicar código? Bom… Não é a melhor escolha!

Bom o exemplo que vou utilizar é de uma mensagem dado uma determinada parte do dia (Bom Dia, Boa Tarde, Boa Noite).

Vou utilizar um enum como parâmetro, mas poderia ser qualquer tipo primitivo.

Dia.cs

Aqui como é um cenário mais simples podemos criar direto a factory, sem complexidade adicional.

MensagemFactory.cs

Por fim basta apenas consumir nossa “mini-factory”.

Program.cs

Conclusão

No artigo de hoje vimos o padrão mais utilizado de todos os 23, o Factory Pattern, tentei demonstrar de forma simples e direta uma forma “completa” de implementação e uma forma mais “simples” bem comum no dia-a-dia.

Espero que tenha ficado claro e simples sua importância e utilização!

Agradeço a atenção e bons estudos!!!!!

Caso precise entrar em contato, me mande uma mensagem aqui.

Baixe o projeto clicando aqui.

--

--

Lucas Eschechola
Lucas Eschechola

Written by Lucas Eschechola

Welcome, my name is Lucas Eschechola and and i’m .Net Developer since 2012. Let’s Code!

No responses yet