//策略抽象类
class Strategy{
public:
virtual void execute() = 0;
};
//具体策略类A
class ConcreteStrategyA:public Strategy{
public:
void execute() override
{
std::cout << "使用策略A执行算法" << std::endl;
}
};
// 具体策略类B
class ConcreteStrategyB : public Strategy {
public:
void execute() override
{
std::cout << "使用策略B执行算法" << std::endl;
}
};
// 上下文类
class Context {
private:
Strategy* strategy;
public:
void setStrategy(Strategy* strategy) {
this->strategy = strategy;
}
void executeStrategy() {
if (strategy) {
strategy->execute();
}
}
};
int main()
{
Context context;
// 使用策略A执行算法
ConcreteStrategyA strategyA;
context.setStrategy(&strategyA);
context.executeStrategy();
// 使用策略B执行算法
ConcreteStrategyB strategyB;
context.setStrategy(&strategyB);
context.executeStrategy();
return 0;
}
策略模式(c++实现)
于 2024-09-04 19:59:57 首次发布