Sobes.tech
Middle

Geben Sie ein Beispiel für die Implementierung des Entwurfsmusters 'Builder' in C#.

sobes.tech KI

Antwort von AI

Das Muster "Builder" trennt den Prozess des Bauens eines komplexen Objekts von seiner Darstellung, so dass derselbe Bauprozess verschiedene Darstellungen erzeugen kann. Es wird angewendet, wenn die Erstellung eines Objekts mehrere Schritte und Konfigurationen erfordert.

// Der abstrakte Builder deklariert die Schnittstelle zur Erstellung von Objektteilen.
public abstract class Builder
{
    public abstract void BuildPartA();
    public abstract void BuildPartB();
    public abstract Product GetResult();
}

// Der konkrete Builder implementiert die Builder-Schnittstelle
// und baut und montiert die Teile des Produkts.
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;
    }
}

// Das Produkt stellt ein komplexes Objekt dar, das gebaut werden soll.
public class Product
{
    private List<string> _parts = new List<string>();

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

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

// Der Director konstruiert das Objekt mit Hilfe der Builder-Schnittstelle.
public class Director
{
    public void Construct(Builder builder)
    {
        builder.BuildPartA();
        builder.BuildPartB();
    }
}

// Beispiel für die Verwendung
public class Program
{
    public static void Main(string[] args)
    {
        Director director = new Director();
        ConcreteBuilder builder = new ConcreteBuilder(); // Erstellen eines konkreten Builders

        director.Construct(builder); // Der Director steuert den Bauprozess

        Product result = builder.GetResult(); // Erhalten des fertigen Produkts
        result.ListParts(); // Ausgabe der Produktteile
    }
}

Hauptkomponenten:

  • Builder: Abstrakte Schnittstelle zur Erstellung von Teilen des Endprodukts.
  • ConcreteBuilder: Konkrete Implementierung von Builder, die Teile des Produkts baut und zusammenfügt.
  • Director: Klasse, die Builder verwendet, um das Objekt schrittweise zu konstruieren, ohne seinen konkreten Typ zu kennen.
  • Product: Das komplexe Objekt, das gebaut wird.

Dieses Beispiel zeigt, wie Director ConcreteBuilder verwendet, um Product Schritt für Schritt zu erstellen, wobei der Bauprozess vom Repräsentationsprozess getrennt ist.