面试题答案
一键面试策略模式概念
策略模式(Strategy Pattern)是一种行为型设计模式,它定义了一系列算法,将每个算法封装起来,并使它们可以相互替换。策略模式让算法的变化独立于使用算法的客户,使得代码具有更好的可维护性和扩展性。
C++ 中使用抽象类实现策略模式
抽象类定义
// 抽象策略类
class Strategy {
public:
virtual void execute() const = 0;
virtual ~Strategy() = default;
};
具体策略类实现
// 具体策略类A
class ConcreteStrategyA : public Strategy {
public:
void execute() const override {
std::cout << "执行策略A" << std::endl;
}
};
// 具体策略类B
class ConcreteStrategyB : public Strategy {
public:
void execute() const override {
std::cout << "执行策略B" << std::endl;
}
};
客户端代码使用策略
#include <iostream>
#include <memory>
int main() {
// 使用策略A
std::unique_ptr<Strategy> strategyA = std::make_unique<ConcreteStrategyA>();
strategyA->execute();
// 使用策略B
std::unique_ptr<Strategy> strategyB = std::make_unique<ConcreteStrategyB>();
strategyB->execute();
return 0;
}
在上述代码中,Strategy
是抽象策略类,定义了所有具体策略类都需要实现的 execute
方法。ConcreteStrategyA
和 ConcreteStrategyB
是具体的策略类,分别实现了不同的 execute
行为。在客户端代码 main
函数中,通过创建具体策略类的对象,并调用 execute
方法来使用不同的策略。这样,当需要添加新的策略时,只需要创建新的具体策略类并实现 execute
方法,而不需要修改客户端代码,符合开闭原则。