Advertisement
yakovmonarh

Строитель (Builder)

Aug 21st, 2019
222
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.19 KB | None | 0 0
  1. using System;
  2. using System.Text;
  3. using System.Threading;
  4. using System.Linq;
  5.  
  6. class Program
  7. {
  8.    static void Main(string[] args)
  9.    {
  10.     Baker bake = new Baker();
  11.     BreadBuilder builder = new RyeBreadBuilder();
  12.     Bread ryeBread = bake.Bake(builder);
  13.     Console.WriteLine(ryeBread.ToString());
  14.    
  15.     builder = new WheatBreadBuilder();
  16.     Bread wheatBread = bake.Bake(builder);
  17.     Console.WriteLine(wheatBread.ToString());
  18.    
  19.     Console.ReadLine();
  20.    }
  21. }
  22.  
  23. abstract class BreadBuilder
  24. {
  25.     public Bread Bread{get;private set;}
  26.     public void CreateBread()
  27.     {
  28.         Bread = new Bread();
  29.     }
  30.     public abstract void SetFlour();
  31.     public abstract void SetSalt();
  32.     public abstract void SetAdditives();
  33. }
  34.  
  35. class Baker
  36. {
  37.     public Bread Bake(BreadBuilder breadBuilder)
  38.     {
  39.         breadBuilder.CreateBread();
  40.         breadBuilder.SetFlour();
  41.         breadBuilder.SetSalt();
  42.         breadBuilder.SetAdditives();
  43.         return breadBuilder.Bread;
  44.     }
  45. }
  46.  
  47. class RyeBreadBuilder: BreadBuilder
  48. {
  49.     public override void SetFlour()
  50.     {
  51.         this.Bread.flour = new Flour{Sort = "Ржаная мука I сорт"};
  52.     }
  53.    
  54.     public override void SetSalt()
  55.     {
  56.         this.Bread.salt = new Salt();
  57.     }
  58.    
  59.     public override void SetAdditives()
  60.     {
  61.        
  62.     }
  63. }
  64.  
  65. class WheatBreadBuilder: BreadBuilder
  66. {
  67.     public override void SetFlour()
  68.     {
  69.         this.Bread.flour = new Flour{Sort = "Пшеничная мука I сорт"};
  70.     }
  71.    
  72.     public override void SetSalt()
  73.     {
  74.         this.Bread.salt = new Salt();
  75.     }
  76.    
  77.     public override void SetAdditives()
  78.     {
  79.         this.Bread.addinives = new Additives{Name = "Улучшитель хлебопекарный"};
  80.     }
  81. }
  82.  
  83.  
  84.  
  85. class Flour
  86. {
  87.     public string Sort{get;set;}
  88. }
  89.  
  90. class Salt
  91. {
  92.    
  93. }
  94.  
  95. class Additives
  96. {
  97.     public string Name{get;set;}
  98. }
  99.  
  100. class Bread
  101. {
  102.     public Flour flour {get;set;}
  103.    
  104.     public Salt salt {get;set;}
  105.    
  106.     public Additives addinives {get;set;}
  107.    
  108.     public override string ToString()
  109.     {
  110.         var sb = new StringBuilder();
  111.        
  112.         if(flour != null)
  113.             sb.Append(flour.Sort + Environment.NewLine);
  114.         if(salt != null)
  115.             sb.Append("Соль" + Environment.NewLine);
  116.         if(addinives != null)
  117.             sb.Append(addinives.Name + Environment.NewLine);
  118.        
  119.         return sb.ToString();
  120.     }
  121.  
  122. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement