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.
Exemplos de uso: O padrão Factory Method é amplamente utilizado no código Java. É muito útil quando você precisa fornecer um alto nível de flexibilidade para seu código.
O padrão está presente nas principais bibliotecas Java:
Identificação: Os métodos fábrica podem ser reconhecidos por métodos de criação, que criam objetos de classes concretas, mas os retornam como objetos de tipo ou interface abstrata.
Produção de elementos da GUI de plataforma cruzada
Neste exemplo, os botões desempenham uma função de produto e os diálogos atuam como criadores.
Diferentes tipos de caixas de diálogo requerem seus próprios tipos de elementos. É por isso que criamos uma subclasse para cada tipo de diálogo e substituímos seus métodos fábrica.
Agora, cada tipo de diálogo instanciará as classes de botão apropriadas. O diálogo base funciona com produtos usando sua interface comum, é por isso que seu código permanece funcional após todas as alterações.
buttons
buttons/Button.java: Interface de produto comum
buttons/HtmlButton.java: Produto concreto
buttons/WindowsButton.java: Mais um produto concreto
factory
factory/Dialog.java: Criador base
factory/HtmlDialog.java: Criador concreto
factory/WindowsDialog.java: Mais um criador concreto
Demo.java: Código cliente
OutputDemo.txt: Resultados da execução (HtmlDialog)
OutputDemo.png: Resultados da execução (WindowsDialog)