Skip to main content

Padrão Builder

  • Padrão Builder

Intenção

  • O Builder é um padrão de projeto criacional que permite a você construir objetos complexos passo a passo. O padrão permite que você produza diferentes tipos e representações de um objeto usando o mesmo código de construção. Alt text

Pseudocódigo

Alt text

Exemplo

using System;

// Produto
class Carro
{
public string Modelo { get; set; }
public string Motor { get; set; }
public string Transmissao { get; set; }
public string Cor { get; set; }

public void MostrarDetalhes()
{
Console.WriteLine($"Modelo: {Modelo}");
Console.WriteLine($"Motor: {Motor}");
Console.WriteLine($"Transmissão: {Transmissao}");
Console.WriteLine($"Cor: {Cor}");
}
}

// Interface Builder
interface ICarroBuilder
{
void ConstruirModelo();
void ConstruirMotor();
void ConstruirTransmissao();
void ConstruirCor();
Carro ObterCarro();
}

// Concreto Builder
class CarroBuilder : ICarroBuilder
{
private Carro carro = new Carro();

public void ConstruirModelo()
{
carro.Modelo = "Sedan";
}

public void ConstruirMotor()
{
carro.Motor = "V6";
}

public void ConstruirTransmissao()
{
carro.Transmissao = "Automática";
}

public void ConstruirCor()
{
carro.Cor = "Preto";
}

public Carro ObterCarro()
{
return carro;
}
}

// Diretor
class Diretor
{
private ICarroBuilder carroBuilder;

public Diretor(ICarroBuilder builder)
{
carroBuilder = builder;
}

public void ConstruirCarro()
{
carroBuilder.ConstruirModelo();
carroBuilder.ConstruirMotor();
carroBuilder.ConstruirTransmissao();
carroBuilder.ConstruirCor();
}
}

// Exemplo de uso
class Program
{
static void Main()
{
ICarroBuilder builder = new CarroBuilder();
Diretor diretor = new Diretor(builder);

diretor.ConstruirCarro();

Carro carro = builder.ObterCarro();
carro.MostrarDetalhes();

// Saída esperada:
// Modelo: Sedan
// Motor: V6
// Transmissão: Automática
// Cor: Preto
}
}

Anotações

var car = new Car.CarBuilder()
.WithModel("")
.WithYear(1252)
.WithColor("")
.Build()