state模式主要是把不同的状态封装成相应独立的类,然后对象的状态在各个类之间迁移,从而把各

个状态分离开来。

具体代码如下:

//所有状态类的基类

class State
{
public:
    State(){};
    virtual ~State(){};

 

    //此状态的处理方法,可以在此方法中调用WorkContext的SetNext方法,实现状态迁移
    virtual void Handle(WorkContext* pWorkContext)=0;
};

class WorkContext
{
private:
    State* _pState;//保存当前的的状态
public:
    WorkContext():_pState(0){};//初始一个状态
    ~WorkContext(){};
    void setNext(State* pState){_pState=pState;};//改变状态
    void Request();//通过调用当前状态pState的Handle方法实现外部的状态请求
};