Middle
Forneça um exemplo de implementação do padrão de projeto 'Construtor' em C#.
sobes.tech IA
Resposta da IA
O padrão "Construtor" separa o processo de construção de um objeto complexo de sua representação, de modo que o mesmo processo de construção possa criar diferentes representações. Aplica-se quando a criação do objeto requer múltiplos passos e configurações.
// O construtor abstrato declara a interface para criar partes do objeto.
public abstract class Builder
{
public abstract void BuildPartA();
public abstract void BuildPartB();
public abstract Product GetResult();
}
// O construtor concreto implementa a interface Builder
// e constrói e monta as partes do produto.
public class ConcreteBuilder : Builder
{
private Product _product = new Product();
public override void BuildPartA()
{
_product.Add("PartA");
}
public override void BuildPartB()
{
_product.Add("PartB");
}
public override Product GetResult()
{
return _product;
}
}
// O produto representa um objeto complexo que deve ser construído.
public class Product
{
private List<string> _parts = new List<string>();
public void Add(string part)
{
_parts.Add(part);
}
public void ListParts()
{
Console.WriteLine("Partes do produto: " + string.Join(", ", _parts));
}
}
// O diretor constrói o objeto usando a interface Builder.
public class Director
{
public void Construct(Builder builder)
{
builder.BuildPartA();
builder.BuildPartB();
}
}
// Exemplo de uso
public class Program
{
public static void Main(string[] args)
{
Director director = new Director();
ConcreteBuilder builder = new ConcreteBuilder(); // Criando um construtor concreto
director.Construct(builder); // O diretor orienta o processo de construção
Product result = builder.GetResult(); // Obtém o produto final
result.ListParts(); // Exibe as partes do produto
}
}
Componentes principais:
- Builder: Interface abstrata para criar partes do produto final.
- ConcreteBuilder: Implementação concreta de Builder, que constrói e monta as partes do produto.
- Director: Classe que usa Builder para construir passo a passo o objeto, sem conhecer seu tipo concreto.
- Product: Objeto complexo que está sendo construído.
Este exemplo demonstra como Director usa ConcreteBuilder para criar Product passo a passo, separando o processo de construção de sua representação.