Sobes.tech
Middle

C# tilida 'Quruvchi' dizayn shablonining amalga oshirilish misolini keltiring.

sobes.tech AI

AIdan javob

"Qurilishchi" shabloni murakkab ob'yning qurilish jarayonini uning tasviridan ajratadi, shunda bir xil qurilish jarayoni turli xil tasvirlarni yaratishi mumkin. Bu, ob'ektni yaratish ko'p bosqichlar va sozlamalarni talab qiladigan hollarda qo'llaniladi.

// Abstrakt quruvchi ob'yning qismlarini yaratish uchun interfeysni e'lon qiladi.
public abstract class Builder
{
    public abstract void BuildPartA();
    public abstract void BuildPartB();
    public abstract Product GetResult();
}

// Konkret quruvchi Builder interfeysini amalga oshiradi
// va ob'yning qismlarini quradi va yig'adi.
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;
    }
}

// Mahsulot, qurilishi kerak bo'lgan murakkab ob'ektni ifodalaydi.
public class Product
{
    private List<string> _parts = new List<string>();

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

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

// Direktor, Builder interfeysidan foydalanib ob'ektni quradi.
public class Director
{
    public void Construct(Builder builder)
    {
        builder.BuildPartA();
        builder.BuildPartB();
    }
}

// Foydalanish misoli
public class Program
{
    public static void Main(string[] args)
    {
        Director director = new Director();
        ConcreteBuilder builder = new ConcreteBuilder(); // Konkret quruvchi yaratamiz

        director.Construct(builder); // Direktor qurilish jarayonini boshqaradi

        Product result = builder.GetResult(); // Tayyor mahsulotni olamiz
        result.ListParts(); // Mahsulot qismlarini chiqaramiz
    }
}

Asosiy komponentlar:

  • Builder: Yakuniy mahsulot qismlarini yaratish uchun abstrakt interfeys.
  • ConcreteBuilder: Mahsulot qismlarini quradigan va yig'adigan konkret amalga oshirish.
  • Director: Ob'ektni bosqichma-bosqich qurish uchun Builder'dan foydalanadigan sinf, uning konkret turini bilmay.
  • Product: Qurilgan murakkab ob'ekt.

Ushbu misol, Director ning ConcreteBuilder yordamida Productni bosqichma-bosqich qanday yaratishini ko'rsatadi, qurilish jarayonini uning tasviridan ajratadi.