您的位置:首页 > 其它

每天一个设计模式: 状态模式(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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: