zoukankan      html  css  js  c++  java
  • 设计模式学习笔记--状态模式

     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
  • 相关阅读:
    SpringCloud微服务初步认识
    SpringCloud-Hystrix:服务熔断与降级
    List接口下重要集合源码分析
    高频面试题:手写一个LRU
    Java基础面试题面经整理(持续更新)
    Redis高可用之主从复制
    Redis过期键删除和内存淘汰
    Redis持久化(RDB与AOF)
    了解Redis事务
    Redis入门与安装
  • 原文地址:https://www.cnblogs.com/bzyzhang/p/5538225.html
Copyright © 2011-2022 走看看