用c语言展示一下状态模式
时间: 2023-02-28 07:32:37 浏览: 56
#include <stdio.h>
/* 定义抽象状态类 */
class State
{
public:
virtual void Handle() = 0;
};
/* 具体状态类 */
class ConcreteStateA : public State
{
public:
void Handle()
{
printf("ConcreteStateA::Handle\n");
}
};
class ConcreteStateB : public State
{
public:
void Handle()
{
printf("ConcreteStateB::Handle\n");
}
};
/* 状态上下文类 */
class Context
{
public:
Context(State* state)
{
this->_state = state;
}
void Request()
{
this->_state->Handle();
}
void ChangeState(State* state)
{
this->_state = state;
}
private:
State* _state;
};
int main(int argc, char* argv[])
{
/* 初始化状态 */
State* stateA = new ConcreteStateA();
State* stateB = new ConcreteStateB();
/* 初始化上下文 */
Context* context = new Context(stateA);
/* 请求处理 */
context->Request(); // 输出:ConcreteStateA::Handle
/* 改变状态 */
context->ChangeState(stateB);
context->Request(); // 输出:ConcreteStateB::Handle
return 0;
}中文回答: 使用C语言来展示状态模式,需要定义一个抽象状态类,然后定义具体的状态类,最后定义一个状态上下文类,然后通过调用状态上下文类的Request()函数,就可以改变状态实现不同的功能。