码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式学习笔记--状态模式

时间:2016-05-28 20:43:44      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:

技术分享
 1 using System;
 2 
 3 namespace State
 4 {
 5     /// <summary> 
 6     /// 作者:bzyzhang
 7     /// 时间:2016/5/28 19:44:40 
 8     /// 博客地址:http://www.cnblogs.com/bzyzhang/
 9     /// Work说明:本代码版权归bzyzhang所有,使用时必须带上bzyzhang博客地址 
10     /// </summary> 
11     public class Work
12     {
13         private State current;
14 
15         public Work()
16         {
17             current = new ForenoonState();
18         }
19 
20         private double hour;
21 
22         public double Hour
23         {
24             get { return hour; }
25             set { hour = value; }
26         }
27 
28         private bool finish = false;
29 
30         public bool TaskFinished
31         {
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     /// <summary> 
 6     /// 作者:bzyzhang
 7     /// 时间:2016/5/28 19:43:56 
 8     /// 博客地址:http://www.cnblogs.com/bzyzhang/
 9     /// State说明:本代码版权归bzyzhang所有,使用时必须带上bzyzhang博客地址 
10     /// </summary> 
11     public abstract class State
12     {
13         public abstract void WriteProgram(Work work);
14     }
15 }
View Code
技术分享
 1 using System;
 2 
 3 namespace State
 4 {
 5     /// <summary> 
 6     /// 作者:bzyzhang
 7     /// 时间:2016/5/28 19:45:39 
 8     /// 博客地址:http://www.cnblogs.com/bzyzhang/
 9     /// ForenoonState说明:上午工作状态
10     /// </summary> 
11     public class ForenoonState:State
12     {
13         public override void WriteProgram(Work work)
14         {
15             if (work.Hour < 12)
16             {
17                 Console.WriteLine("当前时间:{0}点 上午工作,精神百倍",work.Hour);
18             }
19             else
20             {
21                 work.SetState(new NoonState());
22                 work.WriteProgram();
23             }
24         }
25     }
26 }
View Code
技术分享
 1 using System;
 2 
 3 namespace State
 4 {
 5     /// <summary> 
 6     /// 作者:bzyzhang
 7     /// 时间:2016/5/28 19:52:33 
 8     /// 博客地址:http://www.cnblogs.com/bzyzhang/
 9     /// NoonState说明:本代码版权归bzyzhang所有,使用时必须带上bzyzhang博客地址 
10     /// </summary> 
11     public class NoonState:State
12     {
13         public override void WriteProgram(Work work)
14         {
15             if (work.Hour < 13)
16             {
17                 Console.WriteLine("当前时间:{0}点 饿了,午饭:犯困,午休。", work.Hour);
18             }
19             else
20             {
21                 work.SetState(new AfternoonState());
22                 work.WriteProgram();
23             }
24         }
25     }
26 }
View Code
技术分享
 1 using System;
 2 
 3 namespace State
 4 {
 5     /// <summary> 
 6     /// 作者:bzyzhang
 7     /// 时间:2016/5/28 19:54:17 
 8     /// 博客地址:http://www.cnblogs.com/bzyzhang/
 9     /// AfternoonState说明:本代码版权归bzyzhang所有,使用时必须带上bzyzhang博客地址 
10     /// </summary> 
11     public class AfternoonState:State
12     {
13         public override void WriteProgram(Work work)
14         {
15             if (work.Hour < 17)
16             {
17                 Console.WriteLine("当前时间:{0}点 下午状态还不错,继续努力。", work.Hour);
18             }
19             else
20             {
21                 work.SetState(new EveningState());
22                 work.WriteProgram();
23             }
24         }
25     }
26 }
View Code
技术分享
 1 using System;
 2 
 3 namespace State
 4 {
 5     /// <summary> 
 6     /// 作者:bzyzhang
 7     /// 时间:2016/5/28 19:56:32 
 8     /// 博客地址:http://www.cnblogs.com/bzyzhang/
 9     /// EveningState说明:本代码版权归bzyzhang所有,使用时必须带上bzyzhang博客地址 
10     /// </summary> 
11     public class EveningState:State
12     {
13         public override void WriteProgram(Work work)
14         {
15             if (work.TaskFinished)
16             {
17                 work.SetState(new RestState());
18                 work.WriteProgram();
19             }
20             else
21             {
22                 if (work.Hour < 21)
23                 {
24                     Console.WriteLine("当前时间:{0}点 加班哦,疲累至极!", work.Hour);
25                 }
26                 else
27                 {
28                     work.SetState(new SleepingState());
29                     work.WriteProgram();
30                 }
31             }
32         }
33     }
34 }
View Code
技术分享
 1 using System;
 2 
 3 namespace State
 4 {
 5     /// <summary> 
 6     /// 作者:bzyzhang
 7     /// 时间:2016/5/28 19:58:45 
 8     /// 博客地址:http://www.cnblogs.com/bzyzhang/
 9     /// SleepingState说明:本代码版权归bzyzhang所有,使用时必须带上bzyzhang博客地址 
10     /// </summary> 
11     public class SleepingState:State
12     {
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     /// <summary> 
 6     /// 作者:bzyzhang
 7     /// 时间:2016/5/28 19:59:52 
 8     /// 博客地址:http://www.cnblogs.com/bzyzhang/
 9     /// RestState说明:本代码版权归bzyzhang所有,使用时必须带上bzyzhang博客地址 
10     /// </summary> 
11     public class RestState:State
12     {
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

 

设计模式学习笔记--状态模式

标签:

原文地址:http://www.cnblogs.com/bzyzhang/p/5538225.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!