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.