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:
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:
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.
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.
Top comments (1)
Show!