 using System;using System.Collections.Generic;using System.Text;namespace 状态模式{  class Program  {    static void Main(string[] args)    {      //紧急项目      Work emergencyProjects = new Work();      emergencyProjects.Hour = 9;      emergencyProjects.WriteProgram();      emergencyProjects.Hour = 10;      emergencyProjects.WriteProgram();      emergencyProjects.Hour = 12;      emergencyProjects.WriteProgram();      emergencyProjects.Hour = 13;      emergencyProjects.WriteProgram();      emergencyProjects.Hour = 14;      emergencyProjects.WriteProgram();      emergencyProjects.Hour = 17;      //emergencyProjects.WorkFinished = true;      emergencyProjects.TaskFinished = false;      emergencyProjects.WriteProgram();      emergencyProjects.Hour = 19;      emergencyProjects.WriteProgram();      emergencyProjects.Hour = 22;      emergencyProjects.WriteProgram();      Console.Read();    }  }  //抽象状态  public abstract class State  {    public abstract void WriteProgram(Work w);  }  //上午工作状态  public class ForenoonState : State  {    public override void WriteProgram(Work w)    {      if (w.Hour < 12)      {        Console.WriteLine("当前时间:{0}点 上午工作,精神百倍", w.Hour);      }      else      {        w.SetState(new NoonState());        w.WriteProgram();      }    }  }  //中午工作状态  public class NoonState : State  {    public override void WriteProgram(Work w)    {      if (w.Hour < 13)      {        Console.WriteLine("当前时间:{0}点 饿了,午饭;犯困,午休。", w.Hour);      }      else      {        w.SetState(new AfternoonState());        w.WriteProgram();      }    }  }  //下午工作状态  public class AfternoonState : State  {    public override void WriteProgram(Work w)    {      if (w.Hour < 17)      {        Console.WriteLine("当前时间:{0}点 下午状态还不错,继续努力", w.Hour);      }      else      {        w.SetState(new EveningState());        w.WriteProgram();      }    }  }  //晚间工作状态  public class EveningState : State  {    public override void WriteProgram(Work w)    {      if (w.TaskFinished)      {        w.SetState(new RestState());        w.WriteProgram();      }      else      {        if (w.Hour < 21)        {          Console.WriteLine("当前时间:{0}点 加班哦,疲累之极", w.Hour);        }        else        {          w.SetState(new SleepingState());          w.WriteProgram();        }      }    }  }  //睡眠状态  public class SleepingState : State  {    public override void WriteProgram(Work w)    {      Console.WriteLine("当前时间:{0}点 不行了,睡着了。", w.Hour);    }  }  //下班休息状态  public class RestState : State  {    public override void WriteProgram(Work w)    {      Console.WriteLine("当前时间:{0}点 下班回家了", w.Hour);    }  }  //工作  public class Work  {    private State current;    public Work()    {      current = new ForenoonState();    }    private double hour;    public double Hour    {      get { return hour; }      set { hour = value; }    }    private bool finish = false;    public bool TaskFinished    {      get { return finish; }      set { finish = value; }    }    public void SetState(State s)    {      current = s;    }    public void WriteProgram()    {      current.WriteProgram(this);    }  }}
using System;using System.Collections.Generic;using System.Text;namespace 状态模式{  class Program  {    static void Main(string[] args)    {      //紧急项目      Work emergencyProjects = new Work();      emergencyProjects.Hour = 9;      emergencyProjects.WriteProgram();      emergencyProjects.Hour = 10;      emergencyProjects.WriteProgram();      emergencyProjects.Hour = 12;      emergencyProjects.WriteProgram();      emergencyProjects.Hour = 13;      emergencyProjects.WriteProgram();      emergencyProjects.Hour = 14;      emergencyProjects.WriteProgram();      emergencyProjects.Hour = 17;      //emergencyProjects.WorkFinished = true;      emergencyProjects.TaskFinished = false;      emergencyProjects.WriteProgram();      emergencyProjects.Hour = 19;      emergencyProjects.WriteProgram();      emergencyProjects.Hour = 22;      emergencyProjects.WriteProgram();      Console.Read();    }  }  //抽象状态  public abstract class State  {    public abstract void WriteProgram(Work w);  }  //上午工作状态  public class ForenoonState : State  {    public override void WriteProgram(Work w)    {      if (w.Hour < 12)      {        Console.WriteLine("当前时间:{0}点 上午工作,精神百倍", w.Hour);      }      else      {        w.SetState(new NoonState());        w.WriteProgram();      }    }  }  //中午工作状态  public class NoonState : State  {    public override void WriteProgram(Work w)    {      if (w.Hour < 13)      {        Console.WriteLine("当前时间:{0}点 饿了,午饭;犯困,午休。", w.Hour);      }      else      {        w.SetState(new AfternoonState());        w.WriteProgram();      }    }  }  //下午工作状态  public class AfternoonState : State  {    public override void WriteProgram(Work w)    {      if (w.Hour < 17)      {        Console.WriteLine("当前时间:{0}点 下午状态还不错,继续努力", w.Hour);      }      else      {        w.SetState(new EveningState());        w.WriteProgram();      }    }  }  //晚间工作状态  public class EveningState : State  {    public override void WriteProgram(Work w)    {      if (w.TaskFinished)      {        w.SetState(new RestState());        w.WriteProgram();      }      else      {        if (w.Hour < 21)        {          Console.WriteLine("当前时间:{0}点 加班哦,疲累之极", w.Hour);        }        else        {          w.SetState(new SleepingState());          w.WriteProgram();        }      }    }  }  //睡眠状态  public class SleepingState : State  {    public override void WriteProgram(Work w)    {      Console.WriteLine("当前时间:{0}点 不行了,睡着了。", w.Hour);    }  }  //下班休息状态  public class RestState : State  {    public override void WriteProgram(Work w)    {      Console.WriteLine("当前时间:{0}点 下班回家了", w.Hour);    }  }  //工作  public class Work  {    private State current;    public Work()    {      current = new ForenoonState();    }    private double hour;    public double Hour    {      get { return hour; }      set { hour = value; }    }    private bool finish = false;    public bool TaskFinished    {      get { return finish; }      set { finish = value; }    }    public void SetState(State s)    {      current = s;    }    public void WriteProgram()    {      current.WriteProgram(this);    }  }}

 
  
					
				
评论