class Program
{
static void Main(string[] args)
{
//紧急项目
Work emergencyProject = new Work();
emergencyProject.Hour = 9;
emergencyProject.WriteProgram();
emergencyProject.Hour = 10;
emergencyProject.WriteProgram();
emergencyProject.Hour = 12;
emergencyProject.WriteProgram();
emergencyProject.Hour = 13;
emergencyProject.WriteProgram();
emergencyProject.Hour = 14;
emergencyProject.WriteProgram();
emergencyProject.Hour = 17;
emergencyProject.Finish = false;
emergencyProject.WriteProgram();
emergencyProject.Hour = 19;
emergencyProject.WriteProgram();
emergencyProject.Hour = 22;
emergencyProject.WriteProgram();
Console.Read();
}
public class Work
{
private int hour;
private bool finish = false;
public int Hour
{
get { return hour; }
set { hour = value; }
}
public bool Finish
{
get { return finish; }
set { finish = value; }
}
/// <summary>
/// 根据时间来判断当前的工作状态如何
///
/// 方法过长
/// </summary>
public void WriteProgram()
{
if (hour < 12)
{
Console.WriteLine("当前时间:{0}点 上午工作,精神百倍", hour);
}
else if (hour < 13)
{
Console.WriteLine("当前时间:{0}点 饿了,午饭;犯困,午休", hour);
}
else if (hour < 17)
{
Console.WriteLine("当前时间:{0}点 下午状态还不错,继续努力", hour);
}
else
{
if (finish)
{
Console.WriteLine("当前时间:{0}点 下班回家了", hour);
}
else
{
if (hour < 21)
{
Console.WriteLine("当前时间:{0}点 加班哦,疲惫至极", hour);
}
else
{
Console.WriteLine("当前时间:{0}点 不行了,睡着了。", hour);
}
}
}
}
}
}
class Program
{
static void Main(string[] args)
{
//紧急项目
Work emergencyProject = new Work();
emergencyProject.Hour = 9;
emergencyProject.WriteProgram();
emergencyProject.Hour = 10;
emergencyProject.WriteProgram();
emergencyProject.Hour = 12;
emergencyProject.WriteProgram();
emergencyProject.Hour = 13;
emergencyProject.WriteProgram();
emergencyProject.Hour = 14;
emergencyProject.WriteProgram();
emergencyProject.Hour = 17;
emergencyProject.TaskFinished = false;
emergencyProject.WriteProgram();
emergencyProject.Hour = 19;
emergencyProject.WriteProgram();
emergencyProject.Hour = 22;
emergencyProject.WriteProgram();
Console.Read();
}
public class Work
{
private int hour;
private bool finish = false;
private State current;
//初始化进入的时候是上午工作状态
public Work()
{
current = new ForenoonState();
}
public int Hour
{
get { return hour; }
set { hour = value; }
}
public bool TaskFinished
{
get { return finish; }
set { finish = value; }
}
public void SetState(State s)
{
current = s;
}
public void WriteProgram()
{
current.WriteProgram(this);
}
}
/// <summary>
/// 抽象状态
/// </summary>
public abstract class State
{
public abstract void WriteProgram(Work w);
}
/// <summary>
/// 上午工作状态
///
/// 逻辑是:根据时间推移,上午工作后,移至中午午饭时间
/// </summary>
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();
}
}
}
/// <summary>
/// 中午工作状态
///
/// 逻辑是:根据时间推移,午休时间后,移至下午工作时间
/// </summary>
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();
}
}
}
/// <summary>
/// 下午工作状态
///
/// 逻辑是:根据时间推移,下午工作后,移至晚间工作状态
/// </summary>
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();
}
}
}
/// <summary>
/// 晚间工作状态
///
/// 逻辑是:已完成工作的可以准点下班,移至下班休息状态
/// 未完成工作的继续加班:这里又分为未超过人体承受能力的(21小时)就继续加班(此处已是最底层,没有再多加其他的操作了)
/// 超过21小时的将移至睡眠状态
/// </summary>
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();
}
}
}
}
/// <summary>
/// 睡眠状态
///
/// 最底层,不要再次调用,会无限往复的
/// </summary>
public class SleepingState : State
{
public override void WriteProgram(Work w)
{
Console.WriteLine("当前时间:{0}点 不行了,睡着了", w.Hour);
}
}
/// <summary>
/// 下班休息状态
///
/// 最底层,不要再次调用,会无限往复的
/// </summary>
public class RestState : State
{
public override void WriteProgram(Work w)
{
if (w.TaskFinished)
{
Console.WriteLine("当前时间:{0}点 下班回家", w.Hour);
}
}
}
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有