zoukankan      html  css  js  c++  java
  • 设计模式6-状态模式

    状态模式:当对象的状态转换条件过于复杂时,把状态的判断逻辑转移到表示不同状态的一系列类,可以把复杂的判断逻辑简化。

    当一个对象的行为取决于它的状态,并且必须在运行时刻根据状态改变它的行为时,就可以考虑使用状态模式了。

     1 namespace DesignModel.状态模式
     2 {
     3     class Work
     4     {
     5         private State curSta;
     6         public Work()
     7         {
     8             curSta = null;
     9         }
    10           
    11         public int Hour { get; set; }
    12 
    13         public void SetState(State sta) {
    14             curSta = sta;
    15         }
    16         
    17         public void WriteProgram()
    18         {
    19             curSta.DoWork(this);
    20         }
    21 
    22     }
    23     abstract class State
    24     {
    25         public  abstract void DoWork(Work w);
    26     }
    27     class NoonState : State
    28     {
    29         public override void DoWork(Work w)
    30         {
    31             if (w.Hour < 13)
    32                 Console.WriteLine("");
    33             else {
    34                 w.SetState(new AfternoonState());
    35                 w.WriteProgram();
    36 
    37             }
    38         }
    39     }
    40     class AfternoonState : State
    41     {
    42         public override void DoWork(Work w)
    43         {
    44             if (w.Hour < 23)
    45                 Console.WriteLine("");
    46         }
    47     }
    48 }
    49 
    50   /// <summary>
    51         /// 主类引用状态类的抽象,具体状态类实现判断逻辑
    52         /// </summary>
    53         static void 状态模式()
    54         {
    55             var w = new Work();
    56             w.Hour = 9;
    57             w.SetState(new NoonState());
    58             w.WriteProgram();
    59             w.Hour = 14;
    60             w.SetState(new AfternoonState());
    61             w.WriteProgram();
    62             ///...
    63         }
    View Code
  • 相关阅读:
    &【12】Python 函数
    &【11】Python 流程控制
    &【09】Python 数据类型之dictionary
    &【07】Python 数据类型之元组
    &【08】Python 数据类型之set
    &【06】Python 数据类型之list
    &【05】Python 彻底搞懂分片操作
    &【04】Python 数据结构之序列
    SpringBoot-HelloWorld(三)
    SpringBoot-了解微服务(二)
  • 原文地址:https://www.cnblogs.com/liurui/p/5536678.html
Copyright © 2011-2022 走看看