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.