Загрузка данных
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. Спроектируйте диаграмму классов
- Продемонстрируйте принципы паттерна Строитель.
- Разделите создание сложного объекта (пиццы) на шаги.
- Позволите создавать разные варианты объекта, используя один и тот же процесс постройки.