Cleven Nesello
Cleven Nesello11/03/2023 10:44
Compartilhe

Builder usando C#

  • #C#

O padrão de projeto Builder é um padrão de criação que permite construir objetos complexos passo a passo. Ele é útil quando a criação direta de um objeto é difícil ou impossível devido à sua complexidade ou a várias opções que podem ser configuradas para personalizar o objeto. O padrão de projeto Builder separa a construção de um objeto de sua representação e permite que diferentes representações do mesmo objeto sejam criadas usando o mesmo processo de construção.

Em C#, o padrão de projeto Builder é implementado criando uma interface ou classe abstrata "Builder" que define os métodos para construir as diferentes partes do objeto. Em seguida, é criada uma classe "Director" que coordena o processo de construção usando o objeto Builder. Por fim, uma classe "ConcreteBuilder" é criada para implementar o processo de construção em si.

Um exemplo de uso do padrão de projeto Builder em C# seria para construir um objeto "Carro" com várias opções de personalização, como a cor, o modelo do motor, o tipo de transmissão, etc. A seguir, está um exemplo de implementação do padrão de projeto Builder em C# para criar um objeto "Carro":

// Classe Carro

public class Carro

{

 public string ModeloMotor { get; set; }

 public string TipoTransmissao { get; set; }

 public string Cor { get; set; }

 // outras propriedades

 public override string ToString()

 {

  return $"Modelo do Motor: {ModeloMotor}, Tipo de Transmissão: {TipoTransmissao}, Cor: {Cor}";

 }

}

// Interface Builder

public interface ICarroBuilder

{

 void DefinirModeloMotor(string modelo);

 void DefinirTipoTransmissao(string tipo);

 void DefinirCor(string cor);

 Carro ObterCarro();

}

// Classe ConcreteBuilder

public class CarroBuilder : ICarroBuilder

{

 private Carro carro = new Carro();

 public void DefinirModeloMotor(string modelo)

 {

  carro.ModeloMotor = modelo;

 }

 public void DefinirTipoTransmissao(string tipo)

 {

  carro.TipoTransmissao = tipo;

 }

 public void DefinirCor(string cor)

 {

  carro.Cor = cor;

 }

 public Carro ObterCarro()

 {

  return carro;

 }

}

// Classe Director

public class Concessionaria

{

 private ICarroBuilder builder;

 public Concessionaria(ICarroBuilder builder)

 {

  this.builder = builder;

 }

 public void ConstruirCarro()

 {

  builder.DefinirModeloMotor("Motor V6");

  builder.DefinirTipoTransmissao("Automática");

  builder.DefinirCor("Azul");

 }

}

// Uso

static void Main(string[] args)

{

 ICarroBuilder builder = new CarroBuilder();

 Concessionaria concessionaria = new Concessionaria(builder);

 concessionaria.ConstruirCarro();

 Carro carro = builder.ObterCarro();

 Console.WriteLine(carro.ToString());

 // Output: Modelo do Motor: Motor V6, Tipo de Transmissão: Automática, Cor: Azul

}

Nesse exemplo, a classe CarroBuilder implementa a interface ICarroBuilder e define os métodos para definir as diferentes partes do objeto Carro. A classe Concessionaria atua como o diretor e coordena o processo de construção da classe Carro, chamando os métodos apropriados no objeto Builder para definir as partes do carro. Por fim, é chamado o método ObterCarro() no objeto Builder para obter o objeto Carro completo e personalizado.

O padrão de projeto Builder oferece a vantagem de permitir que diferentes representações do mesmo objeto sejam criadas usando o mesmo processo de construção, o que pode ser útil em casos em que a criação direta do objeto é difícil ou impossível. Ele também torna o processo de construção mais flexível e modular, permitindo que diferentes partes do objeto sejam construídas em diferentes etapas. Isso pode ser particularmente útil em aplicativos que precisam construir objetos complexos com muitas opções de personalização.

Compartilhe
Comentários (0)