策略模式(Strategy Pattern)是一种行为设计模式,它定义了一系列算法,并将每一个算法封装起来,使它们可以互相替换。策略模式让算法的变化独立于使用算法的客户。这种模式主要涉及到三个角色:
class Strategy {
public:
virtual ~Strategy() {}
virtual void AlgorithmInterface() = 0;
};
class ConcreteStrategyA : public Strategy {
public:
void AlgorithmInterface() override {
std::cout << "Implementing Algorithm A" << std::endl;
}
};
class ConcreteStrategyB : public Strategy {
public:
void AlgorithmInterface() override {
std::cout << "Implementing Algorithm B" << std::endl;
}
};
class Context {
private:
Strategy* strategy;
public:
Context(Strategy* strategy) : strategy(strategy) {}
~Context() {
delete strategy;
}
void ContextInterface() {
strategy->AlgorithmInterface();
}
};
int main() {
Strategy* strategyA = new ConcreteStrategyA();
Context* context = new Context(strategyA);
context->ContextInterface();
delete context; // 注意适时释放资源
Strategy* strategyB = new ConcreteStrategyB();
context = new Context(strategyB);
context->ContextInterface();
delete context; // 注意适时释放资源
return 0;
}
Implementing Algorithm A
Implementing Algorithm B