每天一个设计模式: 状态模式(State)

来源:互联网 发布:李选民淘宝上卖的真吗 编辑:程序博客网 时间:2024/05/01 16:02
// 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;}


0 0
原创粉丝点击