设计模式之状态模式(State)
来源:互联网 发布:oracle。sql存储表 编辑:程序博客网 时间:2024/05/22 00:37
作用:一个对象的行为取决于它的状态, 并且它必须在运行时刻根据状态改变它的行为;
#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;}
阅读全文
0 0
- 设计模式之State(状态)
- 设计模式之状态设计模式,state
- 设计模式之state状态模式
- 设计模式之State Pattern 状态模式。
- Java设计模式之State(状态模式)
- 设计模式之State(状态模式)
- 设计模式之(十七)状态模式State
- 设计模式之状态模式(State Pattern)
- 设计模式之十 --- 状态(State)模式
- 浅学设计模式之状态<state>模式
- 【设计模式】之状态模式(State)
- 设计模式之十 --- 状态(State)模式
- java设计模式之状态 模式State
- 浅学设计模式之状态<state>模式
- 设计模式之状态模式(State)
- 设计模式之状态模式(state model)
- 设计模式之状态模式(State)
- 设计模式入门之状态模式State
- Luogu p1605 迷宫
- CGI/FastCgi/PHP-FPM
- macOS10.13.1 上编译wxWidgets
- php函数系列 array函数相关一
- 部署和应用程序没有匹配的安全区域错误
- 设计模式之状态模式(State)
- 为什么 Python被Google选为TensorFlow的开发语言呢?使用 Python比C++语言进行机器学习有什么优势?
- C小知识点 :sizeof和strlen的异同
- 除了Type-C转HDMI,华为Mate10支持VGA和DP线投屏吗?
- 深入理解分布式事务,高并发下分布式事务的解决方案
- 使用electron开发桌面音乐播放器
- Jquery获取鼠标位置和判断鼠标是否在DIV中
- Struts2学习01
- 程序员的双十一:别人都在托单,我们却在脱发