写一个C++策略模式
时间: 2024-09-10 21:19:09 浏览: 38
策略模式是一种行为设计模式,用于将复杂的业务决策封装到独立的对象中。在C++中,我们可以创建一系列的策略类,每个类都包含一个执行特定操作的方法,并通过一个上下文类来选择和使用这些策略。
下面是一个简单的C++策略模式的例子:
```cpp
// 策略接口
class Strategy {
public:
virtual double execute(double input) const = 0;
};
// 具体策略A
class StrategyA : public Strategy {
public:
double execute(double input) const override {
return input * 1.5;
}
};
// 具体策略B
class StrategyB : public Strategy {
public:
double execute(double input) const override {
return input / 2;
}
};
// 上下文类,管理策略
class Context {
private:
std::shared_ptr<Strategy> strategy;
public:
void setStrategy(std::shared_ptr<Strategy> strategy) { this->strategy = strategy; }
double calculate(double input) const {
return strategy->execute(input);
}
};
int main() {
Context context;
context.setStrategy(std::make_shared<StrategyA>());
std::cout << "Strategy A result: " << context.calculate(10) << std::endl;
context.setStrategy(std::make_shared<StrategyB>());
std::cout << "Strategy B result: " << context.calculate(10) << std::endl;
return 0;
}
```
在这个例子中,`StrategyA` 和 `StrategyB` 是两个具体的策略,`Context` 类负责切换和执行策略。你可以动态地更改`Context` 的策略,改变其行为。
阅读全文