Advertisement
yakovmonarh

Состояние (State)

Sep 5th, 2019
171
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.62 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.Threading;
  5. using System.Linq;
  6. using System.Threading.Tasks;
  7.  
  8. class Program
  9. {
  10.    static void Main(string[] args)
  11.    {
  12.     Water water = new Water(new LiquidWaterState());
  13.    
  14.     water.Head();
  15.     water.Frost();
  16.     water.Frost();
  17.    
  18.     Console.ReadLine();
  19.    }
  20. }
  21.  
  22. class Water
  23. {
  24.     public IWaterState State {get; set;}
  25.    
  26.     public Water(IWaterState ws)
  27.     {
  28.         this.State = ws;   
  29.     }
  30.    
  31.     public void Head()
  32.     {
  33.         State.Head(this);
  34.     }
  35.    
  36.     public void Frost()
  37.     {
  38.         State.Frost(this);
  39.     }
  40. }
  41.  
  42. interface IWaterState
  43. {
  44.     void Head(Water water);
  45.     void Frost(Water water);
  46. }
  47.  
  48. class SolidWaterState : IWaterState
  49. {
  50.     public void Head(Water water)
  51.     {
  52.         Console.WriteLine("Превращаем лёд в воду");
  53.         water.State = new LiquidWaterState();
  54.     }
  55.    
  56.     public void Frost(Water water)
  57.     {
  58.         Console.WriteLine("Продолжаем заморозку льда");
  59.     }
  60. }
  61.  
  62. class LiquidWaterState : IWaterState
  63. {
  64.     public void Head(Water water)
  65.     {
  66.         Console.WriteLine("Превращаем жидкость в пар");
  67.         water.State = new GasWaterState();
  68.     }
  69.    
  70.     public void Frost(Water water)
  71.     {
  72.         Console.WriteLine("Превращаем жидкость в лёд");
  73.         water.State = new SolidWaterState();
  74.     }
  75. }
  76.  
  77. class GasWaterState : IWaterState
  78. {
  79.     public void Head(Water water)
  80.     {
  81.         Console.WriteLine("Продолжаем нагревать газ");
  82.     }
  83.    
  84.     public void Frost(Water water)
  85.     {
  86.         Console.WriteLine("Превращаем пар в жидкость");
  87.         water.State = new LiquidWaterState();  
  88.     }
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement