DEV Community

Juarez Júnior for Develop4Us

Posted on • Edited on

1 1

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

Hostinger image

Get n8n VPS hosting 3x cheaper than a cloud solution

Get fast, easy, secure n8n VPS hosting from $4.99/mo at Hostinger. Automate any workflow using a pre-installed n8n application and no-code customization.

Start now

Top comments (0)

AWS Security LIVE!

Join us for AWS Security LIVE!

Discover the future of cloud security. Tune in live for trends, tips, and solutions from AWS and AWS Partners.

Learn More

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay