Ochkasty_Dino

Pattern_Builder

Oct 7th, 2020 (edited)
84
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace OOP_Builder
  8. {
  9.     class Program
  10.     {
  11.         static void Main(string[] args)
  12.         {
  13.             Cook cooker = new Cook(); // объект повара
  14.             RollBuilder builder = new California(); //билдер калифорнии
  15.             Roll califa = cooker.Cooks(builder);//катаем ролл
  16.             Console.WriteLine(califa.ToString());
  17.             builder = new Filadelfia();// билдер ролла филадельфии
  18.             Roll fila = cooker.Cooks(builder);
  19.             Console.WriteLine(fila.ToString());
  20.             Console.Read();
  21.  
  22.         }
  23.         //рыба
  24.         class Fish
  25.         {
  26.             public string type { get; set; }
  27.         }
  28.         //рис
  29.         class Rice { }
  30.         //доп ингридиенты
  31.         class Ingridients
  32.         {
  33.             public string Nazv { get; set; }
  34.         }
  35.         //сам класс ролла
  36.         class Roll
  37.         {
  38.             public Fish fish { get; set; }
  39.             public Rice rice { get; set; }
  40.             public Ingridients ingridients { get; set; }
  41.  
  42.             public override string ToString()
  43.             {
  44.                 StringBuilder sb = new StringBuilder();
  45.  
  46.                 if (fish != null)
  47.                     sb.Append(fish.type + "\n");
  48.                 if (rice != null)
  49.                     sb.Append("Рис \n");
  50.                 if (ingridients != null)
  51.                     sb.Append("Добавки: " + ingridients.Nazv + " \n");
  52.                 return sb.ToString();
  53.             }
  54.         }
  55.         // абстрактный класс строителя
  56.         abstract class RollBuilder
  57.         {
  58.             public Roll roll { get; private set; }
  59.             public void CreateRoll()
  60.             {
  61.                 roll = new Roll();
  62.             }
  63.  
  64.             public abstract void SetFish();
  65.             public abstract void SetRice();
  66.             public abstract void SetIngridients();
  67.         }
  68.         // класс повара
  69.         class Cook
  70.         {
  71.             public Roll Cooks(RollBuilder rollBuilder)
  72.             {
  73.                 rollBuilder.CreateRoll();
  74.                 rollBuilder.SetFish();
  75.                 rollBuilder.SetRice();
  76.                 rollBuilder.SetIngridients();
  77.  
  78.                 return rollBuilder.roll;
  79.             }
  80.         }
  81.         // класс ролла калифорния
  82.         class California : RollBuilder
  83.         {
  84.             public override void SetFish()
  85.             {
  86.                 this.roll.fish = new Fish {type = "тунец+тобика" };
  87.             }
  88.             public override void SetRice()
  89.             {
  90.                 this.roll.rice = new Rice();
  91.             }
  92.             public override void SetIngridients()
  93.             {
  94.                 this.roll.ingridients = new Ingridients { Nazv = "нори+огурец" };
  95.             }
  96.         }
  97.         // класс ролла филадельфии
  98.         class Filadelfia : RollBuilder
  99.         {
  100.             public override void SetFish()
  101.             {
  102.                 this.roll.fish = new Fish { type = "лосось" };
  103.             }
  104.             public override void SetRice()
  105.             {
  106.                 this.roll.rice = new Rice();
  107.             }
  108.             public override void SetIngridients()
  109.             {
  110.                 this.roll.ingridients = new Ingridients { Nazv = "нори+сыр" };
  111.             }
  112.         }
  113.  
  114.     }
  115. }
  116.  
RAW Paste Data