用策略模式写一段demo
时间: 2023-03-24 10:02:52 浏览: 76
好的,我可以回答这个问题。策略模式是一种常用的设计模式,它可以让我们在运行时动态地选择算法或行为。下面是一个简单的策略模式的示例代码:
```
#include <iostream>
#include <vector>
using namespace std;
class Strategy {
public:
virtual void execute() = ;
};
class ConcreteStrategyA : public Strategy {
public:
void execute() {
cout << "Executing strategy A" << endl;
}
};
class ConcreteStrategyB : public Strategy {
public:
void execute() {
cout << "Executing strategy B" << endl;
}
};
class Context {
private:
Strategy* strategy;
public:
Context(Strategy* strategy) {
this->strategy = strategy;
}
void setStrategy(Strategy* strategy) {
this->strategy = strategy;
}
void executeStrategy() {
strategy->execute();
}
};
int main() {
ConcreteStrategyA strategyA;
ConcreteStrategyB strategyB;
Context context(&strategyA);
context.executeStrategy();
context.setStrategy(&strategyB);
context.executeStrategy();
return ;
}
```
在这个示例中,我们定义了一个 `Strategy` 接口,它有一个 `execute()` 方法。然后我们定义了两个具体的策略类 `ConcreteStrategyA` 和 `ConcreteStrategyB`,它们实现了 `Strategy` 接口的 `execute()` 方法。最后我们定义了一个 `Context` 类,它有一个 `Strategy` 成员变量,可以在运行时动态地设置不同的策略。在 `main()` 函数中,我们创建了两个具体的策略对象,并将其中一个对象设置为 `Context` 的策略,然后调用 `executeStrategy()` 方法执行策略。