DEV Community

Guilherme Pirani for VaiVoa

Posted on

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

Top comments (1)

Collapse
 
thonecardoso profile image
Thone

Show!