zoukankan      html  css  js  c++  java
  • 状态模式

    1、一种事件会有不同的状态,我们将这些状态都独立出来,用一个类去维护这些状态。

    2、定义:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。

    3、代码实现:

    1)定义一个抽像的类

    1  //定义一个抽象的状态类
    2     abstract class State
    3     {
    4         public abstract void Handle();
    5     }

    2)实现类AB

     1  class ConcreteStateA : State
     2     {
     3         //进入下一状态
     4         public override void Handle(Context context)
     5         {
     6             context.State = new ConcreteStateB();
     7         }
     8     }
     9 
    10     class ConcreteStateB : State
    11     {
    12 
    13         public override void Handle(Context context)
    14         {
    15             context.State = new ConcreteStateA();
    16         }
    17     }

    3)要有一个维护实现状态类的子类

     1 //Content类 维护一个ConcreteState子类的实例
     2     class Context
     3     {
     4         private State state;
     5         public Context(State state) {
     6             this.state = state;
     7         }
     8         public State State
     9         {
    10             get { return state; }
    11 
    12             set
    13             {
    14                 state = value;
    15                 Console.WriteLine("当前状态:"+state.GetType().Name);
    16             }
    17         }
    18         public void Request()
    19         {
    20             state.Handle(this);
    21         }
    22     }

    4)客户端

    1 static void Main(string[] args)
    2         {
    3             Context c = new  Context(new ConcreteStateA());
    4             c.Request();
    5             c.Request();
    6             Console.Read();
    7 
    8         }
  • 相关阅读:
    动态规划题 HDU-1024
    高效位运算 __builtin_系列函数
    使用评价
    站立会议12-12
    场景调研
    站立会议12-10
    站立会议12-9
    站立会议12-8
    站立会议12-7
    站立会议12-6
  • 原文地址:https://www.cnblogs.com/zhengwei-cq/p/6755066.html
Copyright © 2011-2022 走看看