Sobes.tech
Middle
110
questionbank

Приведи пример реализации паттерна проектирования 'строитель' на языке C#.

Answer from AI

sobes.tech AI

// Класс продукта, который мы будем строить.
public class Product
{
    public string PartA { get; set; }
    public string PartB { get; set; }
    public string PartC { get; set; }

    public void Display()
    {
        Console.WriteLine($"Product parts: {PartA}, {PartB}, {PartC}");
    }
}

// Абстрактный класс строителя.
public abstract class Builder
{
    public abstract void BuildPartA();
    public abstract void BuildPartB();
    public abstract void BuildPartC();
    public abstract Product GetResult();
}

// Конкретный строитель для определенного типа продукта.
public class ConcreteBuilder : Builder
{
    private Product _product = new Product();

    public override void BuildPartA()
    {
        _product.PartA = "Part A Built";
    }

    public override void BuildPartB()
    {
        _product.PartB = "Part B Built";
    }

    public override void BuildPartC()
    {
        _product.PartC = "Part C Built";
    }

    public override Product GetResult()
    {
        return _product;
    }
}

// Класс-посредник (директор), который управляет процессом строительства.
public class Director
{
    public void Construct(Builder builder)
    {
        builder.BuildPartA();
        builder.BuildPartB();
        builder.BuildPartC();
    }
}

// Клиент, использующий строителя.
public class Client
{
    public static void Main(string[] args)
    {
        Director director = new Director();
        Builder builder = new ConcreteBuilder();

        director.Construct(builder);
        Product product = builder.GetResult();

        product.Display();
    }
}