网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

用StatePattern来实现一个简单的状态机-创新互联

首先要理解 State Pattern 模式。

创新互联公司专业为企业提供烈山网站建设、烈山做网站、烈山网站设计、烈山网站制作等企业网站建设、网页设计与制作、烈山企业网站模板建站服务,10多年烈山做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。

http://www.dofactory.com/net/state-design-pattern

Definition

Allow an object to alter its behavior when its internal state changes. The object will appear to change its class.  


UML class diagram


Participants

    The classes and objects participating in this pattern are:

    • Context  (Account)
      • defines the interface of interest to clients
      • maintains an instance of a ConcreteState subclass that defines the current state.
    • State  (State)
      • defines an interface for encapsulating the behavior associated with a particular state of the Context.
    • Concrete State  (RedState, SilverState, GoldState)
      • each subclass implements a behavior associated with a state of Context

先画个状态机用来接收和处理数据。

开始定义Base状态和各个状态

  public abstract class StateBase
    {
public abstract void Enter(Monitor context);

public virtual void Exit(Monitor context)
        {
            Console.WriteLine("Exiting current state: {0}", context.CurrentState.StateName); 
        }

public string StateName
        {
get;
set;
        }
    }
  public class ConnectState : StateBase
    {
public ConnectState()
        {
this.StateName = "Connect"; 
        }
public override void Enter(Monitor context)
        {
            Console.WriteLine("Enter - {0}", context.CurrentState.StateName);
            context.MoveToNextState(new ReceiveDataState()); 
        }
    }

Create a context class, and set initial state to start running.

 public class Monitor
    {
public Monitor()
        {
        }

public void MoveToNextState(StateBase nextState)
        {
            Console.WriteLine("Changing state...");
this.CurrentState.Exit(this);
this.CurrentState = nextState;
this.CurrentState.Enter(this); 
        }

public void Start()
        {
this.CurrentState = new NotStartState();
this.CurrentState.Enter(this); 
        }

public StateBase CurrentState
        {
get;
set;
        }

开始使用状态机

   static void Main(string[] args)
        {
            Monitor m= new Monitor();
            m.Start(); 
        }

当前名称:用StatePattern来实现一个简单的状态机-创新互联
标题网址:http://bjjierui.cn/article/deoesi.html

其他资讯