O padrão Builder é usado para construir objetos complexos passo a passo, de forma mais organizada. Neste exemplo, o Builder foi ajustado para permitir chamadas encadeadas, o que torna o código mais fluente e fácil de ler. Isso é útil em situações onde o objeto possui várias configurações ou partes opcionais, como na construção de uma casa ou na criação de um pedido personalizado. O uso de um Builder facilita o processo e reduz a chance de erros.
Exemplo de Código em C#:
// Produto a ser construído
public class Casa
{
public string Fundacao { get; set; }
public string Estrutura { get; set; }
public string Telhado { get; set; }
public string Interior { get; set; }
public void ExibirDetalhes()
{
Console.WriteLine($"Casa com Fundacao: {Fundacao}, Estrutura: {Estrutura}, Telhado: {Telhado}, Interior: {Interior}");
}
}
// Interface do Builder
public interface ICasaBuilder
{
ICasaBuilder ConstruirFundacao();
ICasaBuilder ConstruirEstrutura();
ICasaBuilder ConstruirTelhado();
ICasaBuilder ConstruirInterior();
Casa GetCasa();
}
// Implementação do Builder concreto
public class CasaBuilder : ICasaBuilder
{
private Casa _casa = new Casa();
public ICasaBuilder ConstruirFundacao()
{
_casa.Fundacao = "Fundação de concreto";
return this;
}
public ICasaBuilder ConstruirEstrutura()
{
_casa.Estrutura = "Estrutura de madeira";
return this;
}
public ICasaBuilder ConstruirTelhado()
{
_casa.Telhado = "Telhado de telhas";
return this;
}
public ICasaBuilder ConstruirInterior()
{
_casa.Interior = "Interior padrão";
return this;
}
public Casa GetCasa()
{
return _casa;
}
}
class Program
{
static void Main(string[] args)
{
// Uso do builder com chamadas encadeadas
ICasaBuilder builder = new CasaBuilder();
Casa casa = builder.ConstruirFundacao()
.ConstruirEstrutura()
.ConstruirTelhado()
.ConstruirInterior()
.GetCasa();
casa.ExibirDetalhes(); // Saída: Casa com Fundacao: Fundação de concreto, Estrutura: Estrutura de madeira, Telhado: Telhado de telhas, Interior: Interior padrão
}
}
Explicação do Código:
Aqui, o builder foi modificado para retornar a própria instância em cada método, permitindo a construção da casa de forma encadeada. Esse estilo de código torna o processo de construção mais claro e intuitivo. Ao final, o método GetCasa é chamado para retornar a casa construída.
Conclusão:
O padrão Builder é uma ótima solução para criar objetos complexos de forma controlada e legível. Ao permitir chamadas encadeadas, o processo de construção se torna mais intuitivo e organizado, sendo ideal para cenários onde múltiplas configurações ou opções precisam ser ajustadas.
Código fonte: GitHub
Top comments (0)