Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- namespace FactoryMethod
- {
- class Program
- {
- static void Main(string[] args)
- {
- PizzaStore nyPizzaStore = new NYPizzaStore();
- nyPizzaStore.OrderPizza("pepperoni");
- PizzaStore chicagoPizza = new ChicagoPizzaStore();
- chicagoPizza.OrderPizza("cheese");
- Console.ReadKey();
- }
- }
- class ChicagoPizzaStore : PizzaStore
- {
- protected override Pizza CreatePizza(string type)
- {
- switch (type)
- {
- case "cheese":
- return new ChicagoCheesePizza();
- case "greek":
- return new ChicagoGreekPizza();
- case "pepperoni":
- return new ChicagoPepperoni();
- default:
- return null;
- }
- }
- }
- class NYPizzaStore : PizzaStore
- {
- protected override Pizza CreatePizza(string type)
- {
- switch (type)
- {
- case "cheese":
- return new NYCheesePizza();
- case "greek":
- return new NYGreekPizza();
- case "pepperoni":
- return new NYPepperoni();
- default:
- return null;
- }
- }
- }
- abstract class PizzaStore
- {
- public Pizza OrderPizza(string type)
- {
- Pizza pizza;
- pizza = CreatePizza(type);
- pizza.Prepare();
- pizza.Bake();
- pizza.Cut();
- pizza.Box();
- return pizza;
- }
- protected abstract Pizza CreatePizza(string type);
- }
- class ChicagoCheesePizza : Pizza
- {
- public ChicagoCheesePizza()
- {
- _name = "Чикагская Сырная пицца";
- _dough = "Толстое тексто";
- _souce = "Томатный соус";
- _toppings.Add("Сыр моцарелла");
- }
- public override void Cut()
- {
- Console.WriteLine("Режем на аккуратные квадратики...");
- }
- }
- class ChicagoGreekPizza : Pizza
- {
- public ChicagoGreekPizza()
- {
- _name = "Чикагская Греческая";
- }
- }
- class ChicagoPepperoni : Pizza
- {
- public ChicagoPepperoni()
- {
- _name = "Чикагская Пепперони";
- }
- }
- class NYCheesePizza : Pizza
- {
- public NYCheesePizza()
- {
- _name = "Нью-Йоркская Сырная пицца";
- _dough = "Тонкое тексто";
- _souce = "Соус Маринара";
- _toppings.Add("Сыр реджано");
- }
- }
- class NYGreekPizza : Pizza
- {
- public NYGreekPizza()
- {
- _name = "Нью-Йоркская Греческая";
- }
- }
- class NYPepperoni : Pizza
- {
- public NYPepperoni()
- {
- _name = "Нью-Йоркская Пепперони";
- }
- }
- abstract class Pizza
- {
- protected string _name;
- protected string _dough;
- protected string _souce;
- protected List<string> _toppings = new List<string>();
- public void Prepare()
- {
- Console.WriteLine("Готовим " + _name + "...");
- Console.WriteLine("Раскатываем тесто...");
- Console.WriteLine("Добавляем соус...");
- Console.WriteLine("Добавляем начинку: ");
- foreach (var toping in _toppings)
- {
- Console.WriteLine(toping);
- }
- }
- public virtual void Bake()
- {
- Console.WriteLine("Запекаем...");
- }
- public virtual void Cut()
- {
- Console.WriteLine("Режем на аккуратные треугольные кусочки...");
- }
- public virtual void Box()
- {
- Console.WriteLine("Упаковываем...");
- }
- public string GetName()
- {
- return _name;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement