Sobes.tech
Middle

Mutassa be a 'Építő' tervezési minta C#-ban történő megvalósításának példáját.

sobes.tech MI

Válasz az MI-től

A "Builder" minta elválasztja egy összetett objektum építési folyamatát a reprezentációjától, így ugyanaz az építési folyamat különböző reprezentációkat hozhat létre. Akkor alkalmazható, amikor az objektum létrehozása több lépést és konfigurációt igényel.

// Az absztrakt építő deklarálja az interfészt az objektum részeinek létrehozásához.
public abstract class Builder
{
    public abstract void BuildPartA();
    public abstract void BuildPartB();
    public abstract Product GetResult();
}

// A konkrét építő implementálja az építő interfészt
// és építi, összeszereli az objektum részeit.
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;
    }
}

// A termék egy összetett objektumot képvisel, amelyet építeni kell.
public class Product
{
    private List<string> _parts = new List<string>();

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

    public void ListParts()
    {
        Console.WriteLine("A termék részei: " + string.Join(", ", _parts));
    }
}

// A direktor az építő interfész segítségével építi az objektumot.
public class Director
{
    public void Construct(Builder builder)
    {
        builder.BuildPartA();
        builder.BuildPartB();
    }
}

// Használati példa
public class Program
{
    public static void Main(string[] args)
    {
        Director director = new Director();
        ConcreteBuilder builder = new ConcreteBuilder(); // Konkrét építő létrehozása

        director.Construct(builder); // A direktor irányítja az építési folyamatot

        Product result = builder.GetResult(); // A kész termék lekérése
        result.ListParts(); // A termék részeinek megjelenítése
    }
}

Fő komponensek:

  • Builder: Absztrakt interfész a végső termék részeinek létrehozásához.
  • ConcreteBuilder: Konkrét implementáció, amely építi és összeszereli a termék részeit.
  • Director: Osztály, amely a Builder-t használva lépésről lépésre építi az objektumot, anélkül, hogy ismerné a konkrét típusát.
  • Product: Az építés alatt álló összetett objektum.

Ez a példa bemutatja, hogyan használja a Director a ConcreteBuilder-t a Product lépésenkénti létrehozásához, elválasztva az építési folyamatot annak reprezentációjától.