设计模式之状态模式(State)
2017-11-28 18:06
330 查看
作用:一个对象的行为取决于它的状态, 并且它必须在运行时刻根据状态改变它的行为;
#include <iostream> using namespace std; class War; class State { public: virtual void start(War *){} virtual void continued(War *){} virtual void end(War *){} virtual void currentState(War *){} }; class War { public: War(State *state):_state(state),_day(0){} ~War(){delete _state;} int getDay(){return _day;} void setDay(int day){_day = day;} void setState(State*state){_state = state;} void getState(){_state->currentState(this);} private: State *_state; int _day; }; class EndState : public State { public: void end(War *) { cout << "war end;"<<endl; } void currentState(War *war) {end(war);} }; class ContinuedState : public State { public: void continued(War *war) { if(war->getDay() < 10) cout << "this is " <<war->getDay()<<" day:continued war;"<<endl; else { war->setState(new EndState); war->getState(); } } void currentState(War *war){continued(war);} }; class StartState : public State { public: void start(War *war) { if(war->getDay() < 5) cout << "this is " <<war->getDay()<<" day:start war;"<<endl; else { war->setState(new ContinuedState); war->getState(); } } void currentState(War *war){start(war);} }; int main() { War *war = new War(new StartState); for(int i = 1; i < 11; ++i) { war->setDay(i); war->getState(); } delete war; return 0; }
相关文章推荐
- Android与设计模式——状态(State)模式
- 设计模式(20)——状态 State
- 设计模式C++学习笔记之十九(State状态模式)
- 设计模式----State(状态)
- 【CDP-云设计模式】第4章,5.状态共享模式(State Sharing Pattern)
- 设计模式解析和实现(C++, java)之二十--状态(state)模式
- 设计模式之状态模式(State)
- 设计模式(12)--State状态模式&Strategy策略模式
- 我所理解的设计模式(C++实现)——状态模式(State Pattern)
- 设计模式之状态模式(state model)
- 设计模式之状态设计模式,state
- C#面向对象模式设计第二十二讲:State 状态模式(行为型模式)
- 【Unity3D与23种设计模式】状态模式(State)
- 设计模式与泡mm的关系之state状态模式及再思考
- Java 设计模式 之 状态模式(State)
- 【行为型模式】状态模式(state)之23种java设计模式
- 设计模式(19)-State 状态模式
- 设计模式之(十二、状态模式State)
- JAVA设计模式九之状态模式State
- 设计模式之状态(state)模式