Factory Method em Go
O Factory method é um padrão de projeto criacional, que resolve o problema de criar objetos de produtos sem especificar suas classes concretas.
O Factory Method define um método, que deve ser usado para criar objetos em vez da chamada direta ao construtor (operador new
). As subclasses podem substituir esse método para alterar a classe de objetos que serão criados.
Se você não conseguir descobrir a diferença entre os padrões Factory, Factory Method e Abstract Factory, leia nossa Comparação Factory.
Exemplo conceitual
É impossível implementar o padrão Factory Method clássico no Go devido à falta de recursos OOP, como classes e herança. No entanto, ainda podemos implementar a versão básica do padrão, o Factory Simples.
Neste exemplo, vamos construir vários tipos de armas usando uma struct factory.
Primeiro, criamos a interface iGun
, que define todos os métodos que uma arma deve ter. Existe um tipo de struct gun
que implementa a interface iGun. Duas armas concretas — ak47
e musket
— ambas incorporam a struct da arma e indiretamente implementam todos os métodos iGun
.
A struct gunFactory
serve como um factory, que cria armas do tipo desejado com base em um argumento de entrada. O main.go atua como o cliente. Em vez de interagir diretamente com o ak47
ou musket
, ele conta com o gunFactory
para criar instâncias de várias armas, usando apenas parâmetros de tipo string para controlar a produção.