Sobes.tech
Middle

Andke näide 'Ehitaja' disainimustri rakendamisest C#-s.

sobes.tech AI

Vastus AI-lt

Mudel "Ehitaja" eraldab keeruka objekti ehitamise protsessi selle esitlusest, nii et sama ehitamisprotsess võib luua erinevaid esitusi. Seda kasutatakse siis, kui objekti loomine nõuab palju samme ja konfiguratsioone.

// Abstraktne ehitaja deklarerib liidese objekti osade loomiseks.
public abstract class Builder
{
    public abstract void BuildPartA();
    public abstract void BuildPartB();
    public abstract Product GetResult();
}

// Konkreetne ehitaja rakendab Builder liidest
// ja ehitab ning kogub toote osi.
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;
    }
}

// Toode esindab keerulist objekti, mis tuleb ehitada.
public class Product
{
    private List<string> _parts = new List<string>();

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

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

// Direktor ehitab objekti Builderi liidese abil.
public class Director
{
    public void Construct(Builder builder)
    {
        builder.BuildPartA();
        builder.BuildPartB();
    }
}

// Näide kasutamisest
public class Program
{
    public static void Main(string[] args)
    {
        Director director = new Director();
        ConcreteBuilder builder = new ConcreteBuilder(); // Loome konkreetse ehitaja

        director.Construct(builder); // Direktor juhib ehitamisprotsessi

        Product result = builder.GetResult(); // Saame valmis toote
        result.ListParts(); // Väljasta toote osad
    }
}

Peamised komponendid:

  • Builder: Abstraktne liides lõpptoote osade loomise jaoks.
  • ConcreteBuilder: Konkreetne ehitaja, mis ehitab ja kogub toote osi.
  • Director: Klass, mis kasutab Builderit, et samm-sammult objekt konstrueerida, teadmata selle konkreetset tüüpi.
  • Product: Keeruline objekt, mis ehitatakse.

See näide näitab, kuidas Director kasutab ConcreteBuilderit, et samm-sammult luua Product, eraldades ehitamisprotsessi selle esitlusest.