Sobes.tech
Middle

Proporcione un ejemplo de implementación del patrón de diseño 'Constructor' en C#.

sobes.tech AI

Respuesta de la IA

El patrón "Constructor" separa el proceso de construcción de un objeto complejo de su representación, de modo que el mismo proceso de construcción pueda crear diferentes representaciones. Se aplica cuando la creación del objeto requiere múltiples pasos y configuraciones.

// El constructor abstracto declara la interfaz para crear partes del objeto.
public abstract class Builder
{
    public abstract void BuildPartA();
    public abstract void BuildPartB();
    public abstract Product GetResult();
}

// El constructor concreto implementa la interfaz Builder
// y construye y ensambla las partes del producto.
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;
    }
}

// El producto representa un objeto complejo que debe ser construido.
public class Product
{
    private List<string> _parts = new List<string>();

    public void Add(string part)
    {
        _parts.Add(part);
    }

    public void ListParts()
    {
        Console.WriteLine("Partes del producto: " + string.Join(", ", _parts));
    }
}

// El director construye el objeto usando la interfaz Builder.
public class Director
{
    public void Construct(Builder builder)
    {
        builder.BuildPartA();
        builder.BuildPartB();
    }
}

// Ejemplo de uso
public class Program
{
    public static void Main(string[] args)
    {
        Director director = new Director();
        ConcreteBuilder builder = new ConcreteBuilder(); // Creamos un constructor concreto

        director.Construct(builder); // El director guía el proceso de construcción

        Product result = builder.GetResult(); // Obtenemos el producto terminado
        result.ListParts(); // Mostramos las partes del producto
    }
}

Componentes principales:

  • Builder: Interfaz abstracta para crear partes del producto final.
  • ConcreteBuilder: Implementación concreta de Builder, que construye y ensambla las partes del producto.
  • Director: Clase que usa Builder para construir paso a paso el objeto, sin conocer su tipo concreto.
  • Product: Objeto complejo que se construye.

Este ejemplo demuestra cómo Director usa ConcreteBuilder para crear Product paso a paso, separando el proceso de construcción de su representación.