Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.Threading;
- using System.Linq;
- using System.Threading.Tasks;
- class Program
- {
- static void Main(string[] args)
- {
- Water water = new Water(new LiquidWaterState());
- water.Head();
- water.Frost();
- water.Frost();
- Console.ReadLine();
- }
- }
- class Water
- {
- public IWaterState State {get; set;}
- public Water(IWaterState ws)
- {
- this.State = ws;
- }
- public void Head()
- {
- State.Head(this);
- }
- public void Frost()
- {
- State.Frost(this);
- }
- }
- interface IWaterState
- {
- void Head(Water water);
- void Frost(Water water);
- }
- class SolidWaterState : IWaterState
- {
- public void Head(Water water)
- {
- Console.WriteLine("Превращаем лёд в воду");
- water.State = new LiquidWaterState();
- }
- public void Frost(Water water)
- {
- Console.WriteLine("Продолжаем заморозку льда");
- }
- }
- class LiquidWaterState : IWaterState
- {
- public void Head(Water water)
- {
- Console.WriteLine("Превращаем жидкость в пар");
- water.State = new GasWaterState();
- }
- public void Frost(Water water)
- {
- Console.WriteLine("Превращаем жидкость в лёд");
- water.State = new SolidWaterState();
- }
- }
- class GasWaterState : IWaterState
- {
- public void Head(Water water)
- {
- Console.WriteLine("Продолжаем нагревать газ");
- }
- public void Frost(Water water)
- {
- Console.WriteLine("Превращаем пар в жидкость");
- water.State = new LiquidWaterState();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement