状态模式个人理解:
​​​绑定状态-------->执行状态的某个动作代码​​​ 代码层面的话:​​状态基类:提供相关的base纯虚函数或者虚函数方法:子类实现各自的base方法-----》 另外调用的类,需要可以设置状态的方法:绑定对应的状态类,实现对应的方法=------​​ 状态模式解决的问题:
如果需要大量使用switch case的场景=-=,可以尝试用状态模式来替代=-= 否则的话=-= 就一两句if else就可以解决的话 那你写这个=-= 就是浪费时间了

  • 实际运用场景:
    游戏客户端设计英雄人物,运动的状态 有跑=跳=-=走 这些状态,就可以用状态模式进行设计英雄的相关状态了
using namespace std;

// 状态的接口类
class State
{
public:
virtual void CurState() = 0;
};

class EatState:public State
{
public:
virtual void CurState()
{
cout << "吃饭状态,要吃饭了;" << endl;
}

};

class RunState:public State
{
public:
virtual void CurState()
{
cout << "跑步状态,要跑步了;" << endl;
}
};

class SleepState:public State
{
public:
virtual void CurState()
{
cout << "睡觉状态,要睡觉了;" << endl;
}
};

class Doing
{
public:
Doing(State* objState)
{
if (objState !=NULL)
{
m_objState = objState;
}
}
void DoWork()
{
m_objState->CurState();
}
private:
State* m_objState;

};

实现:

State * pp = new EatState();
Doing *objDo = new Doing(pp);
objDo->DoWork();