【24种设计模式】状态模式
来源:互联网 发布:win7系统 网络三角形 编辑:程序博客网 时间:2024/06/05 04:42
当一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为时,可考虑用到状态模式
#include "stdafx.h"#include <iostream>using namespace std;class job;class afternoon_state;class night_state;class noon_state;class state{public:state(){}virtual ~state() {}virtual void DoJob(job* pjob) = 0;};class job{public:job();~job() {}void set_state(state* pstate) { m_pstate = pstate; }void do_job() {m_pstate->DoJob(this);}private:state* m_pstate;public:int m_hour;};class noon_state : public state{public:noon_state() {}virtual ~noon_state() {}virtual void DoJob(job* pjob);};class afternoon_state : public state{public:afternoon_state() {}virtual ~afternoon_state() {}virtual void DoJob(job* pjob);};class night_state : public state{public:night_state() {}virtual ~night_state() {}virtual void DoJob(job* pjob);};job::job(){m_pstate = new noon_state();}void noon_state::DoJob(job* pjob){if (pjob->m_hour >= 0 && pjob->m_hour < 14){cout<<"好想睡觉,不想干活"<<endl;}else{pjob->set_state(new afternoon_state());pjob->do_job();}}void night_state::DoJob(job* pjob){if (pjob->m_hour >= 18 && pjob->m_hour < 24){cout<<"晚上啦,下班回家"<<endl;}else{pjob->set_state(new noon_state());pjob->do_job();}}void afternoon_state::DoJob(job* pjob){if (pjob->m_hour >= 14 && pjob->m_hour < 18){cout<<"下午时间,好好干活"<<endl;}else{pjob->set_state(new night_state());pjob->do_job();}}int _tmain(int argc, _TCHAR* argv[]){job test;test.m_hour = 6;test.do_job();test.m_hour = 15;test.do_job();test.m_hour = 20;test.do_job();system("pause");return 0;}
- 【24种设计模式】状态模式
- 设计模式:状态模式
- 设计模式-----状态模式
- 设计模式 状态模式
- 设计模式 - 状态模式
- 设计模式---状态模式
- 设计模式-状态模式
- 设计模式:状态模式
- 设计模式 - 状态模式
- 设计模式-状态模式
- 设计模式--状态模式
- 设计模式-状态模式
- 设计模式:状态模式
- 设计模式-状态模式
- 设计模式-状态模式
- [设计模式]状态模式
- 设计模式 状态模式
- 设计模式--状态模式
- iOS对json文件的读取
- mac上wireshark不能抓包时
- IDC面临云服务商的挑战
- Ubuntu安装g++
- android上的GPS定位的问题
- 【24种设计模式】状态模式
- Ubuntu常用命令
- Android模拟器无法上网问题
- 监控USB设备插拔
- cmd
- Android开发之旅:环境搭建及HelloWorld
- 优秀开源项目:MyXls
- tcp的半连接攻击和全连接攻击--TCP_DEFER_ACCEPT
- 职责链模式