Factory Method — Design Pattern em .NET
Mais um artigo sobre Design Pattern! Lembrando, que estou traduzindo os artigos do portal DoFactory :)
No final coloquei um exemplo do projeto em .NET Core, só clonar e rodar!
Definição
Define uma interface para criação de um objeto, mas permite que uma subclasse decida qual classe será instanciada. Factory Method permite que uma classe delegue uma instanciação para as subclasses.

Frequência do uso: ALTA

Diagrama de Classes UML

Participantes
As classes e objetos participantes nesse pattern são:
Product (Page)
- Define a interface dos objetos que o Factory Method cria.
ConcreteProduct (SkillsPage, EducationPage, ExperiencePage)
- Implementa a interface Product.
Creator (Document)
- Declara o Factory Method, que retorna o objeto do tipo Product. Creator também define uma implementação padrão do Factory Method que retorna o objeto padrão ConcreteProduct.
- Pode chamar o Factory Method para criar um objeto Product.
ConcreteCreator (Report, Resume)
- Sobrescreve o Factory Method que retorna uma instância de um ConcreteProduct.
Código Estrutural em C#
Esse código estrutural demonstra o Factory Method oferecendo uma ótima flexibilidade na criação de diferentes objetos. A classe Abstract pode providenciar um objeto padrão, mas cada subclasse pode instanciar uma versão extendida do objeto.
Output
Created ConcreteProductA
Created ConcreteProductB
Código no mundo real em C#
Esse código do mundo real demonstra o Factory Method oferecendo flexibilidade na criação de diferentes documentos. As classes derivadas de Document, Report e Resume, instanciam versões extendidas da classe Document. Aqui, o Factory Method é chamado no construtor da classe base Document.
Output
Resume — — — —
SkillsPage
EducationPage
ExperiencePage
Report — — — —
IntroductionPage
ResultsPage
ConclusionPage
SummaryPage
BibliographyPage
FONTE: Factory Method em DoFactory
Projeto .NET Core
Meu Resumo
Resumindo… O Factory Method é, para mim, a forma mais simples de usar o Pattern Factory. Você cria uma série de subclasses a partir de uma classe genérica, e cria suas fábricas para construir um conjunto de classes a partir dessas subclasses.
