状态模式

来源:互联网 发布:唱红歌 知党史的意义 编辑:程序博客网 时间:2024/05/29 11:14
#include <iostream>using namespace std;class Context;class State{public:virtual void handleState(Context* pobjContext) = 0;};class Context{public:Context() {}Context(State* pobjState) : m_pobjState(pobjState) {}void getState(){m_pobjState->handleState(this);}void setNextState(State* pobjState){m_pobjState = pobjState;}private:State* m_pobjState;};class ConcreteStateB;class ConcreteStateA : public State{public:ConcreteStateA() {}virtual void handleState(Context* pobjContext) override{if (pobjContext){cout << "state one" << endl;}}};class ConcreteStateB : public State{public:ConcreteStateB() {}virtual void handleState(Context* pobjContext) override{if (pobjContext){cout << "state two" << endl;pobjContext->setNextState(new ConcreteStateA());}}};int main(){Context* pobjContext = new Context(new ConcreteStateB());pobjContext->getState();pobjContext->getState();return 0;}
总结:状态模式把一些与特定状态相关的行为局部化,减少类之间的耦合
0 0
原创粉丝点击