C# Design Pattern: Factory Method (Portugues)
Juarez Júnior
Posted on September 25, 2024
O padrão Factory Method é usado para centralizar a criação de objetos com base em uma escolha ou critério. Em vez de ter várias classes de fábrica, podemos ter uma única classe responsável por criar diferentes tipos de objetos, como documentos, dependendo da necessidade. Isso é útil em situações como quando você precisa criar diferentes formatos de documentos, como PDF ou Word, sem precisar alterar o código principal sempre que um novo formato for adicionado.
Exemplo de Código em C#:
// Produto base
public abstract class Documento
{
public abstract void Imprimir();
}
// Produto concreto 1
public class PdfDocumento : Documento
{
public override void Imprimir()
{
Console.WriteLine("Imprimindo documento PDF.");
}
}
// Produto concreto 2
public class WordDocumento : Documento
{
public override void Imprimir()
{
Console.WriteLine("Imprimindo documento Word.");
}
}
// Classe criadora centralizada
public class DocumentoFactory
{
public enum TipoDocumento
{
PDF,
WORD
}
public Documento CriarDocumento(TipoDocumento tipo)
{
switch (tipo)
{
case TipoDocumento.PDF:
return new PdfDocumento();
case TipoDocumento.WORD:
return new WordDocumento();
default:
throw new ArgumentException("Tipo de documento desconhecido.");
}
}
}
class Program
{
static void Main(string[] args)
{
DocumentoFactory factory = new DocumentoFactory();
// Criar e imprimir um documento PDF
Documento doc = factory.CriarDocumento(DocumentoFactory.TipoDocumento.PDF);
doc.Imprimir(); // Saída: Imprimindo documento PDF.
// Criar e imprimir um documento Word
doc = factory.CriarDocumento(DocumentoFactory.TipoDocumento.WORD);
doc.Imprimir(); // Saída: Imprimindo documento Word.
}
}
Explicação do Código:
Aqui, a classe DocumentoFactory centraliza a criação de diferentes tipos de documentos (PDF e Word). O método CriarDocumento recebe um parâmetro de enumeração TipoDocumento, que define qual tipo de documento deve ser criado. O método então cria e retorna a instância correta com base nesse tipo. No código principal, vemos como criar dinamicamente documentos PDF ou Word dependendo da necessidade.
Conclusão:
O Factory Method centraliza a criação de diferentes tipos de objetos, permitindo que a lógica de criação fique separada do código principal. Isso facilita a adição de novos tipos de objetos no futuro, sem alterar o código já existente. Ele é ideal para cenários onde a criação de objetos pode variar conforme diferentes fatores, como entradas de usuários ou configurações.
Código fonte: GitHub
Posted on September 25, 2024
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.