Загрузка данных


  public class MainBuilder
  {

      public static void Main(string[] args)
      {
          IPizzaBuilder builder = new VegaBuilder();
          PizzaDirector director = new PizzaDirector(builder);
          director.Construct();
          Pizza pizza = builder.GetPizza();
          Console.WriteLine(pizza);
      }
  }

  class Pizza
  {
      private string testo;
      private string soys;
      private string sir;
      private string nachinka;
      public Pizza(string testo, string soys, string sir, string nachinka)
      {
          this.testo = testo;
          this.soys = soys;
          this.sir = sir;
          this.nachinka = nachinka;
      }
      public override string ToString()
      {
          return $"Пицца: {testo}, {soys}, {sir}, {nachinka}";
      }
  }

  interface IPizzaBuilder
  {
      void Setтеста(string testo);
      void Setсоуса(string soys);
      void Setсыра(string sir);
      void Setначинки(string nachinka);
      Pizza GetPizza();
  }

  class VegaBuilder : IPizzaBuilder
  {
      private string testo;
      private string soys;
      private string sir;
      private string nachinka;
      public void Setтеста(string testo)
      {
          this.testo = "цельнозерновое";
      }
      public void Setсоуса(string soys)
      {
          this.soys = "песто";
      }
      public void Setсыра(string sir)
      {
          this.sir = "пармезан";
      }
      public void Setначинки(string nachinka)
      {
          this.nachinka = "грибы, перец, оливки";
      }
      public Pizza GetPizza()
      {
          return new Pizza(testo, soys, sir, nachinka);
      }
  }
  class ClassicBuilder : IPizzaBuilder
  {
      private string testo;
      private string soys;
      private string sir;
      private string nachinka;
      public void Setтеста(string testo)
      {
          this.testo = "тонкое";
      }
      public void Setсоуса(string soys)
      {
          this.soys = "томатное";
      }
      public void Setсыра(string sir)
      {
          this.sir = "мацарелла";
      }
      public void Setначинки(string nachinka)
      {
          this.nachinka = "пепперони";
      }
      public Pizza GetPizza()
      {
          return new Pizza(testo, soys, sir, nachinka);
      }
  }
  class SeaBuilder : IPizzaBuilder
  {
      private string testo;
      private string soys;
      private string sir;
      private string nachinka;
      public void Setтеста(string testo)
      {
          this.testo = "пышное";
      }
      public void Setсоуса(string soys)
      {
          this.soys = "сливочное";
      }
      public void Setсыра(string sir)
      {
          this.sir = "мацарелла";
      }
      public void Setначинки(string nachinka)
      {
          this.nachinka = "креветки, кальмары";
      }
      public Pizza GetPizza()
      {
          return new Pizza(testo, soys, sir, nachinka);
      }
  }

  class PizzaDirector
  {
      private IPizzaBuilder builder;
      public PizzaDirector(IPizzaBuilder builder)
      {
          this.builder = builder;
      }

      public void Construct()
          {
              builder.SetCPU("Intel Core i9-13900K");      // Устанавливаем мощный процессор
              builder.SetGPU("NVIDIA GeForce RTX 4090");   // Устанавливаем топовую видеокарту
              builder.SetMemory(32);                        // Добавляем 32 ГБ оперативной памяти
          }
   }
Задание 2. Создайте приложение для конструирования различных типов пиццы (например, классическая, вегетарианская, с морепродуктами).

Для этого:

1. Определите интерфейс IPizzaBuilder с методами для добавления теста, соуса, сыра, и начинки.
2. Реализуйте несколько классов строителей, например, ClassicPizzaBuilder, VeggiePizzaBuilder, SeafoodPizzaBuilder, которые будут собирать пиццу по-разному.
3. Создайте класс Pizza, который будет хранить состав пиццы.
4. Реализуйте класс PizzaDirector, который управляет последовательностью вызовов методов строителя для получения готовой пиццы.
5. Напишите клиентский код, который будет запрашивать у пользователя тип пиццы и выводить состав готовой пиццы.

6. Спроектируйте диаграмму классов

 

- Продемонстрируйте принципы паттерна Строитель.
- Разделите создание сложного объекта (пиццы) на шаги.
- Позволите создавать разные варианты объекта, используя один и тот же процесс постройки.