DEV Community

Juarez Júnior
Juarez Júnior

Posted on

C# Design Pattern: Builder (Portugues)

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
    }
}
Enter fullscreen mode Exit fullscreen mode

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)