Advertisement
illiden

PatternFactoryMethod

Apr 13th, 2020
259
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.38 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. namespace FactoryMethod
  5. {
  6.     class Program
  7.     {
  8.         static void Main(string[] args)
  9.         {
  10.             PizzaStore nyPizzaStore = new NYPizzaStore();
  11.             nyPizzaStore.OrderPizza("pepperoni");
  12.  
  13.             PizzaStore chicagoPizza = new ChicagoPizzaStore();
  14.             chicagoPizza.OrderPizza("cheese");
  15.             Console.ReadKey();
  16.         }
  17.     }
  18.  
  19.     class ChicagoPizzaStore : PizzaStore
  20.     {
  21.         protected override Pizza CreatePizza(string type)
  22.         {
  23.             switch (type)
  24.             {
  25.                 case "cheese":
  26.                     return new ChicagoCheesePizza();
  27.                 case "greek":
  28.                     return new ChicagoGreekPizza();
  29.                 case "pepperoni":
  30.                     return new ChicagoPepperoni();
  31.                 default:
  32.                     return null;
  33.             }
  34.         }
  35.     }
  36.  
  37.     class NYPizzaStore : PizzaStore
  38.     {
  39.         protected override Pizza CreatePizza(string type)
  40.         {
  41.             switch (type)
  42.             {
  43.                 case "cheese":
  44.                     return new NYCheesePizza();
  45.                 case "greek":
  46.                     return new NYGreekPizza();
  47.                 case "pepperoni":
  48.                     return new NYPepperoni();
  49.                 default:
  50.                     return null;
  51.             }
  52.         }
  53.     }
  54.  
  55.     abstract class PizzaStore
  56.     {
  57.         public Pizza OrderPizza(string type)
  58.         {
  59.             Pizza pizza;
  60.  
  61.             pizza = CreatePizza(type);
  62.  
  63.             pizza.Prepare();
  64.             pizza.Bake();
  65.             pizza.Cut();
  66.             pizza.Box();
  67.             return pizza;
  68.         }
  69.  
  70.         protected abstract Pizza CreatePizza(string type);
  71.     }
  72.  
  73.     class ChicagoCheesePizza : Pizza
  74.     {
  75.         public ChicagoCheesePizza()
  76.         {
  77.             _name = "Чикагская Сырная пицца";
  78.             _dough = "Толстое тексто";
  79.             _souce = "Томатный соус";
  80.  
  81.             _toppings.Add("Сыр моцарелла");
  82.         }
  83.  
  84.         public override void Cut()
  85.         {
  86.             Console.WriteLine("Режем на аккуратные квадратики...");
  87.         }
  88.     }
  89.  
  90.     class ChicagoGreekPizza : Pizza
  91.     {
  92.         public ChicagoGreekPizza()
  93.         {
  94.             _name = "Чикагская Греческая";
  95.         }
  96.     }
  97.  
  98.     class ChicagoPepperoni : Pizza
  99.     {
  100.         public ChicagoPepperoni()
  101.         {
  102.             _name = "Чикагская Пепперони";
  103.         }
  104.     }
  105.  
  106.     class NYCheesePizza : Pizza
  107.     {
  108.         public NYCheesePizza()
  109.         {
  110.             _name = "Нью-Йоркская Сырная пицца";
  111.             _dough = "Тонкое тексто";
  112.             _souce = "Соус Маринара";
  113.  
  114.             _toppings.Add("Сыр реджано");
  115.         }
  116.     }
  117.  
  118.     class NYGreekPizza : Pizza
  119.     {
  120.         public NYGreekPizza()
  121.         {
  122.             _name = "Нью-Йоркская Греческая";
  123.         }
  124.     }
  125.  
  126.     class NYPepperoni : Pizza
  127.     {
  128.         public NYPepperoni()
  129.         {
  130.             _name = "Нью-Йоркская Пепперони";
  131.         }
  132.     }
  133.  
  134.     abstract class Pizza
  135.     {
  136.         protected string _name;
  137.         protected string _dough;
  138.         protected string _souce;
  139.         protected List<string> _toppings = new List<string>();
  140.  
  141.         public void Prepare()
  142.         {
  143.             Console.WriteLine("Готовим " + _name + "...");
  144.             Console.WriteLine("Раскатываем тесто...");
  145.             Console.WriteLine("Добавляем соус...");
  146.             Console.WriteLine("Добавляем начинку: ");
  147.             foreach (var toping in _toppings)
  148.             {
  149.                 Console.WriteLine(toping);
  150.             }
  151.         }
  152.  
  153.         public virtual void Bake()
  154.         {
  155.             Console.WriteLine("Запекаем...");
  156.         }
  157.  
  158.         public virtual void Cut()
  159.         {
  160.             Console.WriteLine("Режем на аккуратные треугольные кусочки...");
  161.         }
  162.  
  163.         public virtual void Box()
  164.         {
  165.             Console.WriteLine("Упаковываем...");
  166.         }
  167.  
  168.         public string GetName()
  169.         {
  170.             return _name;
  171.         }
  172.     }
  173. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement