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.

Pseudocódigo

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()
-
Nessa construção do builder, se caso precisássemos fazer alguma validação se as propriedades estão ok ou outra coisa, faríamos no .Build()
- Da para usar o pattern
ISpecification
- Da para usar o pattern
-
Exemplo: https://github.com/adolfosp/Back-Projetos-Base/tree/main/DesignPatterns/BuilderPattern
-
Vídeo - Domine o Builder Pattern: Guia Completo de Design Patterns em C# para .NET: https://www.youtube.com/watch?v=ZPRgzW5NHw8