DEV Community

Guilherme Pirani for VaiVoa

Posted on

6 2 1

Design Pattern: Factory Method

Os designs de criação, nos quais se inclui o Factory, são utilizados para criar objetos sem expor ao cliente a lógica pela qual aquele objeto é criado. Assim, as subclasses ligadas a uma interface ou classe abstrata podem ser instanciadas sem que o cliente se importe com o tipo específico do objeto sendo criado.

De uma maneira mais prática, o diagrama abaixo é um exemplo de implementação de uma Factory:
SAMPLE FACTORY UML

Pode parecer sem sentido o simples ato de levar o construtor de um objeto para uma outra parte do programa, mas é justamente esse pequeno ato que gera a abstração que queremos, algo extremamente benéfico quando se trata de grandes projetos. Assim podemos sobrescrever o método de criação em uma subclasse, alterando o objeto criado, não é necessário reescrevermos toda a lógica de criação para cada subclasse que quisermos adicionar ao nosso programa, aplicamos princípios SOLID em nosso código, geramos um baixo acoplamento e facilitamos a manutenção.

Quando utilizar o Factory Method:

  • Quando o cliente não sabe de antemão o tipo de objeto que deverá ser criado.
  • Para permitir a extensão do código sem ter que realizar alterações em outras partes do projeto.
  • Para eliminar duplicação de código na criação de objetos.

Prós do Factory Method:

  • Evita acoplamento
  • Facilita Manutenção
  • Responsabilidade única (SOLID)
  • Aberto/Fechado (SOLID)

Contras do Factory Method:

  • Os produtos para serem retornados precisam ter uma classe ou interface base em comum.
  • Gera uma grande quantidade de classes no seu projeto. No entanto cabe aqui uma observação: é responsabilidade do desenvolvedor considerar os trade-offs daquilo que ele implementa. Nesse caso da quantidade de classes, podemos abrir mão de um pró do Factory de forma a diminuir a quantidade de classes, porém aumentando o acoplamento do código (usando switch case na Factory por exemplo, transformando o padrão em um Simple Factory)
  • Outros patterns podem oferecer mais flexibilidade, como Builder e Prototype, porém trazendo maior complexidade. Assim muitos projetos iniciam utilizando Factory e depois migram para outros design patterns.

Para um tutorial prático de como aplicar o Factory Method CLIQUE AQUI.

linha horizontal

Disclaimer

A VaiVoa incentiva seus Desenvolvedores em seu processo de crescimento e aceleração técnica. Os artigos publicados não traduzem a opinião da VaiVoa. A publicação obedece ao propósito de estimular o debate.

logo vaivoa

AWS GenAI LIVE image

Real challenges. Real solutions. Real talk.

From technical discussions to philosophical debates, AWS and AWS Partners examine the impact and evolution of gen AI.

Learn more

Top comments (1)

Collapse
 
thonecardoso profile image
Thone

Show!

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay