博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式学习笔记--状态模式
阅读量:7095 次
发布时间:2019-06-28

本文共 6106 字,大约阅读时间需要 20 分钟。

1 using System; 2  3 namespace State 4 { 5     ///   6     /// 作者:bzyzhang 7     /// 时间:2016/5/28 19:44:40  8     /// 博客地址:http://www.cnblogs.com/bzyzhang/ 9     /// Work说明:本代码版权归bzyzhang所有,使用时必须带上bzyzhang博客地址 10     ///  11     public class Work12     {13         private State current;14 15         public Work()16         {17             current = new ForenoonState();18         }19 20         private double hour;21 22         public double Hour23         {24             get { return hour; }25             set { hour = value; }26         }27 28         private bool finish = false;29 30         public bool TaskFinished31         {32             get { return finish; }33             set { finish = value; }34         }35 36         public void SetState(State state)37         {38             current = state;39         }40 41         public void WriteProgram()42         {43             current.WriteProgram(this);44         }45     }46 }
View Code
1 using System; 2  3 namespace State 4 { 5     ///   6     /// 作者:bzyzhang 7     /// 时间:2016/5/28 19:43:56  8     /// 博客地址:http://www.cnblogs.com/bzyzhang/ 9     /// State说明:本代码版权归bzyzhang所有,使用时必须带上bzyzhang博客地址 10     ///  11     public abstract class State12     {13         public abstract void WriteProgram(Work work);14     }15 }
View Code
1 using System; 2  3 namespace State 4 { 5     ///   6     /// 作者:bzyzhang 7     /// 时间:2016/5/28 19:45:39  8     /// 博客地址:http://www.cnblogs.com/bzyzhang/ 9     /// ForenoonState说明:上午工作状态10     ///  11     public class ForenoonState:State12     {13         public override void WriteProgram(Work work)14         {15             if (work.Hour < 12)16             {17                 Console.WriteLine("当前时间:{0}点 上午工作,精神百倍",work.Hour);18             }19             else20             {21                 work.SetState(new NoonState());22                 work.WriteProgram();23             }24         }25     }26 }
View Code
1 using System; 2  3 namespace State 4 { 5     ///   6     /// 作者:bzyzhang 7     /// 时间:2016/5/28 19:52:33  8     /// 博客地址:http://www.cnblogs.com/bzyzhang/ 9     /// NoonState说明:本代码版权归bzyzhang所有,使用时必须带上bzyzhang博客地址 10     ///  11     public class NoonState:State12     {13         public override void WriteProgram(Work work)14         {15             if (work.Hour < 13)16             {17                 Console.WriteLine("当前时间:{0}点 饿了,午饭:犯困,午休。", work.Hour);18             }19             else20             {21                 work.SetState(new AfternoonState());22                 work.WriteProgram();23             }24         }25     }26 }
View Code
1 using System; 2  3 namespace State 4 { 5     ///   6     /// 作者:bzyzhang 7     /// 时间:2016/5/28 19:54:17  8     /// 博客地址:http://www.cnblogs.com/bzyzhang/ 9     /// AfternoonState说明:本代码版权归bzyzhang所有,使用时必须带上bzyzhang博客地址 10     ///  11     public class AfternoonState:State12     {13         public override void WriteProgram(Work work)14         {15             if (work.Hour < 17)16             {17                 Console.WriteLine("当前时间:{0}点 下午状态还不错,继续努力。", work.Hour);18             }19             else20             {21                 work.SetState(new EveningState());22                 work.WriteProgram();23             }24         }25     }26 }
View Code
1 using System; 2  3 namespace State 4 { 5     ///   6     /// 作者:bzyzhang 7     /// 时间:2016/5/28 19:56:32  8     /// 博客地址:http://www.cnblogs.com/bzyzhang/ 9     /// EveningState说明:本代码版权归bzyzhang所有,使用时必须带上bzyzhang博客地址 10     ///  11     public class EveningState:State12     {13         public override void WriteProgram(Work work)14         {15             if (work.TaskFinished)16             {17                 work.SetState(new RestState());18                 work.WriteProgram();19             }20             else21             {22                 if (work.Hour < 21)23                 {24                     Console.WriteLine("当前时间:{0}点 加班哦,疲累至极!", work.Hour);25                 }26                 else27                 {28                     work.SetState(new SleepingState());29                     work.WriteProgram();30                 }31             }32         }33     }34 }
View Code
1 using System; 2  3 namespace State 4 { 5     ///   6     /// 作者:bzyzhang 7     /// 时间:2016/5/28 19:58:45  8     /// 博客地址:http://www.cnblogs.com/bzyzhang/ 9     /// SleepingState说明:本代码版权归bzyzhang所有,使用时必须带上bzyzhang博客地址 10     ///  11     public class SleepingState:State12     {13         public override void WriteProgram(Work work)14         {15             Console.WriteLine("当前时间:{0}点 不行了,睡着了!", work.Hour);16         }17     }18 }
View Code
1 using System; 2  3 namespace State 4 { 5     ///   6     /// 作者:bzyzhang 7     /// 时间:2016/5/28 19:59:52  8     /// 博客地址:http://www.cnblogs.com/bzyzhang/ 9     /// RestState说明:本代码版权归bzyzhang所有,使用时必须带上bzyzhang博客地址 10     ///  11     public class RestState:State12     {13         public override void WriteProgram(Work work)14         {15             Console.WriteLine("当前时间:{0}点 下班回家了!", work.Hour);16         }17     }18 }
View Code
1 namespace State 2 { 3     class Program 4     { 5         static void Main(string[] args) 6         { 7             Work emergencyProjects = new Work(); 8             emergencyProjects.Hour = 9; 9             emergencyProjects.WriteProgram();10             emergencyProjects.Hour = 10;11             emergencyProjects.WriteProgram();12             emergencyProjects.Hour = 12;13             emergencyProjects.WriteProgram();14             emergencyProjects.Hour = 13;15             emergencyProjects.WriteProgram();16             emergencyProjects.Hour = 14;17             emergencyProjects.WriteProgram();18             emergencyProjects.Hour = 17;19             emergencyProjects.WriteProgram();20 21             emergencyProjects.TaskFinished = true;22 23             emergencyProjects.WriteProgram();24             emergencyProjects.Hour = 19;25             emergencyProjects.WriteProgram();26             emergencyProjects.Hour = 22;27             emergencyProjects.WriteProgram();28         }29     }30 }
View Code

 

转载于:https://www.cnblogs.com/bzyzhang/p/5538225.html

你可能感兴趣的文章
高并发处理案例
查看>>
在matlab中clear,clc,clf,hold作用介绍
查看>>
[物理学与PDEs]第1章习题8 磁场分布 $\ra$ 电流分布
查看>>
技术书单整理
查看>>
c语言开源项目--SQLite学习资料总结
查看>>
Repeater控件
查看>>
JS模板引擎
查看>>
JavaScript之表单验证讲解
查看>>
MSMQ 消息队列
查看>>
java核心知识点学习----多线程并发之线程同步
查看>>
JSP编程中常用的JavaScript技术(转载)
查看>>
jquery easy ui 学习 (5) windowlayout
查看>>
delegate和protocol
查看>>
DevExpress Report的简单应用
查看>>
Spring AOP Schema aop:config、tx:advice
查看>>
Linux 驱动加载到内核中编译<1>
查看>>
设计模式的饕餮盛宴
查看>>
cocos2d-x3.0 lua学习(一个)
查看>>
SQL_修改表结构
查看>>
嵌入式 linux 查看内存
查看>>