在 C++面向对象编程 中,策略模式 是一种非常实用且常见的行为型设计模式。它允许你定义一系列算法,并将每个算法封装起来,使它们可以互换使用。本教程将带你从零开始,一步步理解并实现 C++策略基类设计,即使你是编程小白也能轻松上手!

策略模式的核心思想是:将算法的实现与使用该算法的客户端代码解耦。通过定义一个策略基类(通常是抽象类或接口),不同的具体策略类继承该基类并实现各自的算法逻辑。这样,客户端可以在运行时动态切换策略,而无需修改原有代码。
在 C++ 中,我们通常使用纯虚函数来定义抽象基类。这个基类就是我们的策略基类。
// Strategy.h#ifndef STRATEGY_H#define STRATEGY_H#include <iostream>class Strategy {public: virtual ~Strategy() = default; // 纯虚函数:定义策略接口 virtual void execute() const = 0;};#endif // STRATEGY_H注意:virtual ~Strategy() = default; 提供了虚析构函数,确保通过基类指针删除派生类对象时能正确调用派生类的析构函数。
接下来,我们创建几个具体的策略类,它们都继承自 Strategy 基类,并实现 execute() 方法。
// ConcreteStrategies.h#ifndef CONCRETE_STRATEGIES_H#define CONCRETE_STRATEGIES_H#include "Strategy.h"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"; }};class ConcreteStrategyC : public Strategy {public: void execute() const override { std::cout << "执行策略 C:冒泡排序\n"; }};#endif // CONCRETE_STRATEGIES_H上下文类持有对策略对象的引用,并提供一个接口让客户端设置和使用策略。
// Context.h#ifndef CONTEXT_H#define CONTEXT_H#include "Strategy.h"#include <memory>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 doSomeBusinessLogic() const { if (strategy_) { strategy_->execute(); } else { std::cout << "未设置策略!\n"; } }};#endif // CONTEXT_H// main.cpp#include "Context.h"#include "ConcreteStrategies.h"int main() { // 创建上下文并初始化为策略 A Context context(std::make_unique<ConcreteStrategyA>()); context.doSomeBusinessLogic(); // 动态切换到策略 B context.setStrategy(std::make_unique<ConcreteStrategyB>()); context.doSomeBusinessLogic(); // 再次切换到策略 C context.setStrategy(std::make_unique<ConcreteStrategyC>()); context.doSomeBusinessLogic(); return 0;}运行结果:
执行策略 A:快速排序执行策略 B:归并排序执行策略 C:冒泡排序
通过以上步骤,我们成功实现了 C++策略模式 的基本结构。这种 策略基类设计 方法极大地提升了代码的灵活性和可维护性。无论你是学习 C++面向对象编程 的新手,还是希望优化现有项目的开发者,掌握这一 设计模式教程 中的核心思想都将大有裨益。
记住:好的设计不是一蹴而就的,但策略模式为你提供了一种优雅的方式来管理变化的算法逻辑。快去试试吧!
本文由主机测评网于2025-12-11发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025126263.html