策略模式通过抽象基类定义接口,具体策略类继承实现,上下文类动态持有策略对象,实现算法与客户端解耦。

策略模式是一种行为设计模式,它让你定义一系列算法或策略,并将每种算法分别放入独立的类中,使算法的变化独立于使用它的客户端。在C++中实现策略模式,核心是通过抽象基类定义接口,然后让具体策略类继承并实现该接口,再由上下文类持有策略对象的指针或引用,从而在运行时动态切换策略。
首先创建一个抽象基类,声明策略的公共接口。通常是一个虚函数,用于执行具体的算法逻辑。
class Strategy {
public:
virtual ~Strategy() = default;
virtual void execute() const = 0;
};
每个具体策略继承自Strategy,并实现自己的execute方法。比如:
class ConcreteStrategyA : public Strategy {
public:
void execute() const override {
std::cout << "执行策略 A\n";
}
};
class ConcreteStrategyB : public Strategy {
public:
void execute() const override {
std::cout << "执行策略 B\n";
}
};
上下文类持有一个指向Strategy的指针或引用,可以在构造时传入,也可以在运行时更换。
立即学习“C++免费学习笔记(深入)”;
class Context {
private:
std::unique_ptr<Strategy> strategy_;
public:
explicit Context(std::unique_ptr<Strategy> strategy)
: strategy_(std::move(strategy)) {}
void setStrategy(std::unique_ptr<Strategy> strategy) {
strategy_ = std::move(strategy);
}
void run() const {
if (strategy_) {
strategy_->execute();
}
}
};
在主函数中,可以灵活地切换不同策略:
int main() {
Context context{std::make_unique<ConcreteStrategyA>()};
context.run(); // 输出:执行策略 A
context.setStrategy(std::make_unique<ConcreteStrategyB>());
context.run(); // 输出:执行策略 B
return 0;
}
以上就是c++++怎么实现策略模式_c++策略模式实现方法的详细内容,更多请关注php中文网其它相关文章!
c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号