735просмотров
14.3%от подписчиков
22 марта 2026 г.
Score: 809
🤔 Приведи пример паттерна строитель в С# Паттерн "Строитель" (Builder) используется для пошагового создания сложных объектов. Он удобен, когда объект имеет много параметров и возможных конфигураций. 🚩Проблема без паттерна "Строитель" Допустим, у нас есть класс Car, и мы хотим создавать машины с разными конфигурациями:
public class Car
{ public string Engine { get; set; } public int Wheels { get; set; } public bool HasSunroof { get; set; } public override string ToString() { return $"Car: Engine={Engine}, Wheels={Wheels}, Sunroof={HasSunroof}"; }
} Создавать объект через конструкторы или инициализаторы становится неудобно, если у нас много параметров:
var car1 = new Car { Engine = "V8", Wheels = 4, HasSunroof = true };
var car2 = new Car { Engine = "V6", Wheels = 4, HasSunroof = false }; 🚩Решение с использованием паттерна "Строитель" Сделаем пошаговый процесс сборки объекта с помощью паттерна "Строитель".
Шаг 1: Создаём интерфейс строителя
public interface ICarBuilder
{ ICarBuilder SetEngine(string engine); ICarBuilder SetWheels(int wheels); ICarBuilder SetSunroof(bool hasSunroof); Car Build();
} Шаг 2: Реализуем конкретного строителя
public class CarBuilder : ICarBuilder
{ private Car _car = new Car(); // Временный объект public ICarBuilder SetEngine(string engine) { _car.Engine = engine; return this; // Возвращаем самого себя для цепочки вызовов } public ICarBuilder SetWheels(int wheels) { _car.Wheels = wheels; return this; } public ICarBuilder SetSunroof(bool hasSunroof) { _car.HasSunroof = hasSunroof; return this; } public Car Build() { return _car; // Возвращаем готовый объект }
} Шаг 3: Используем строителя
class Program
{ static void Main() { ICarBuilder builder = new CarBuilder(); Car sportsCar = builder .SetEngine("V8") .SetWheels(4) .SetSunroof(true) .Build(); Car economyCar = builder .SetEngine("V4") .SetWheels(4) .SetSunroof(false) .Build(); Console.WriteLine(sportsCar); Console.WriteLine(economyCar); }
} Вывод в консоли
Car: Engine=V8, Wheels=4, Sunroof=True
Car: Engine=V4, Wheels=4, Sunroof=False Ставь 👍 и забирай 📚 Базу знаний