每天一个设计模式: 状态模式(State)
2016-01-15 08:43
405 查看
// State.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <iostream> class Context; class State { public: virtual void Handle(Context* pContext) = 0; }; class ConcreteStateA : public State { public: virtual void Handle(Context* pContext) { std::cout << "StateA" << std::endl; } }; class ConcreteStateB : public State { virtual void Handle(Context* pContext) { std::cout << "StataB" << std::endl; } }; class Context { public: Context(State *pState) :m_state(pState) { } void Request() { if (m_state) m_state->Handle(this); } void ChangeState(State* pState) { m_state = pState; } private: State* m_state; }; int _tmain(int argc, _TCHAR* argv[]) { State* stateA = new ConcreteStateA(); State* stateB = new ConcreteStateB(); Context *context = new Context(stateA); context->Request(); context->ChangeState(stateB); context->Request(); delete context; delete stateA; delete stateB; getchar(); return 0; }
相关文章推荐
- 使用myeclipse为java web项目添加Spring框架
- ubuntu14.04下mysql数据库的默认存放路径并修改
- ThinkPHP、php项目csv格式导入,需要的可以略作调整
- 全面学习ORACLE Scheduler特性(8)Application抛出的Events
- 地形编辑
- 全面学习ORACLE Scheduler特性(7)Scheduler抛出的Events
- 全面学习ORACLE Scheduler特性(6)设置Repeat Interval参数
- 术语解释
- 第四讲 混合三种背包问题 HDU 3535 AreYouBusy
- FP-growth算法,fpgrowth算法详解
- 全面学习ORACLE Scheduler特性(5)Schedules调度Programs执行的Jobs
- 栈的模拟
- python实现手机号归属地相关信息查询
- 全面学习ORACLE Scheduler特性(4)创建和管理Schedule
- 高级网络综合实战架构案例
- 全面学习ORACLE Scheduler特性(3)使用Programs
- 全面学习ORACLE Scheduler特性(2)管理jobs
- JavaScript提高性能知识点汇总
- python学习日记_第十一天(ex27~28)
- 字符串包含