策略模式 实现 以Qt c++ 为例
时间: 2023-08-21 20:04:30 浏览: 68
好的,以下是一个使用 Qt C++ 实现策略模式的例子:
首先,我们需要定义一个策略接口(Strategy Interface),该接口包含一个虚函数 `doOperation()`,用于执行具体的算法:
```cpp
// Strategy Interface
class Strategy {
public:
virtual int doOperation(int num1, int num2) = 0;
};
```
然后,我们需要实现具体的算法,这里我们实现了两个算法:加法和减法:
```cpp
// Concrete Strategies
class OperationAdd : public Strategy {
public:
int doOperation(int num1, int num2) override {
return num1 + num2;
}
};
class OperationSubtract : public Strategy {
public:
int doOperation(int num1, int num2) override {
return num1 - num2;
}
};
```
接下来,我们需要实现一个 Context 类,该类用于管理策略,并调用具体的算法:
```cpp
// Context
class Context {
public:
Context(Strategy *strategy) : strategy_(strategy) {}
void setStrategy(Strategy *strategy) {
strategy_ = strategy;
}
int executeStrategy(int num1, int num2) {
return strategy_->doOperation(num1, num2);
}
private:
Strategy *strategy_;
};
```
最后,我们来测试一下:
```cpp
int main() {
Strategy *addStrategy = new OperationAdd();
Strategy *subStrategy = new OperationSubtract();
Context *context = new Context(addStrategy);
std::cout << "10 + 5 = " << context->executeStrategy(10, 5) << std::endl;
context->setStrategy(subStrategy);
std::cout << "10 - 5 = " << context->executeStrategy(10, 5) << std::endl;
delete addStrategy;
delete subStrategy;
delete context;
return 0;
}
```
输出结果为:
```
10 + 5 = 15
10 - 5 = 5
```
这样,我们就成功地使用了策略模式,实现了具体的算法和管理策略的功能。