用c++写一个状态模式
时间: 2024-09-11 14:12:33 浏览: 44
c++状态模式
状态模式是一种行为设计模式,它用于管理复杂系统中的对象状态转换。在C++中,你可以通过创建一个基类`State`来表示通用的状态,然后为每种具体的状况创建一个子类,并将这些子类作为基类的对象。还有一个上下文类`Context`,它包含一个指向当前状态对象的指针,以及改变状态的行为。
下面是一个简单的状态模式实现示例:
```cpp
#include <iostream>
#include <memory>
// 状态接口
class State {
public:
virtual void doAction() const = 0;
virtual ~State() {}
};
// 具体状态
class ConcreteStateA : public State {
public:
void doAction() const override {
std::cout << "ConcreteStateA is performing action.\n";
}
};
class ConcreteStateB : public State {
public:
void doAction() const override {
std::cout << "ConcreteStateB is performing action.\n";
}
};
// 上下文类
class Context {
private:
std::shared_ptr<State> currentState;
public:
// 抽象出改变状态的动作
void setState(std::shared_ptr<State> new_state) {
currentState = new_state;
}
// 通过上下文执行状态的行为
void performAction() const {
currentState->doAction();
}
};
int main() {
Context context;
context.setState(std::make_shared<ConcreteStateA>());
context.performAction(); // 输出 "ConcreteStateA is performing action."
context.setState(std::make_shared<ConcreteStateB>());
context.performAction(); // 输出 "ConcreteStateB is performing action."
return 0;
}
阅读全文