Sobes.tech
Middle

Sniedziet piemēru, kā realizēt 'Būvētājs' dizaina paraugu C# valodā.

sobes.tech AI

Atbilde no AI

Modelis "Būvētājs" atdala sarežģīta objekta būvniecības procesu no tā attēlojuma, lai tas pats būvniecības process varētu radīt dažādus attēlojumus. Tas tiek piemērots, kad objekta izveide prasa daudz soļu un konfigurāciju.

// Abstrakts būvētājs deklarē saskarni objekta daļu izveidei.
public abstract class Builder
{
    public abstract void BuildPartA();
    public abstract void BuildPartB();
    public abstract Product GetResult();
}

// Konkrēts būvētājs īsteno Builder saskarni
// un būvē un saliek produkta daļas.
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;
    }
}

// Produkts pārstāv sarežģītu objektu, kas jābūvē.
public class Product
{
    private List<string> _parts = new List<string>();

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

    public void ListParts()
    {
        Console.WriteLine("Produkts daļas: " + string.Join(", ", _parts));
    }
}

// Direktors būvē objektu ar Builder saskarni.
public class Director
{
    public void Construct(Builder builder)
    {
        builder.BuildPartA();
        builder.BuildPartB();
    }
}

// Piemērs izmantošanai
public class Program
{
    public static void Main(string[] args)
    {
        Director director = new Director();
        ConcreteBuilder builder = new ConcreteBuilder(); // Izveidojam konkrētu būvētāju

        director.Construct(builder); // Direktors vada būvniecības procesu

        Product result = builder.GetResult(); // Saņemam gatavo produktu
        result.ListParts(); // Izvadām produkta daļas
    }
}

Galvenās sastāvdaļas:

  • Builder: Abstrakta saskarne galīgās produkta daļu izveidei.
  • ConcreteBuilder: Konkrēta būvētāja īstenojums, kas būvē un saliek produkta daļas.
  • Director: Klase, kas izmanto Builder, lai soli pa solim būvētu objektu, nezinot tā konkrēto tipu.
  • Product: Sarežģīts objekts, kas tiek būvēts.

Šis piemērs rāda, kā Director izmanto ConcreteBuilder, lai soli pa solim izveidotu Product, atdalot būvniecības procesu no tā attēlojuma.