1. 设计模式在C++中的实现概述
作为一名有十年经验的C++开发者,我经常被问到如何在项目中合理运用设计模式。设计模式不是银弹,但恰当使用确实能让代码更健壮、更易维护。今天我就结合实战经验,聊聊23种经典设计模式在C++中的具体实现方式。
C++作为一门支持多范式编程的语言,其面向对象特性与设计模式有着天然的契合度。不同于Java等语言,C++需要开发者更关注内存管理、性能开销等底层细节,这使得设计模式的实现需要考虑更多因素。比如工厂模式中对象的生命周期管理,观察者模式中的指针安全问题等。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 创建型模式实现详解
2.1 单例模式的双重检查锁定
在C++11之前,实现线程安全的单例需要特别注意:
cpp复制class Singleton {
private:
static Singleton* instance;
static std::mutex mtx;
Singleton() {} // 私有构造函数
public:
static Singleton* getInstance() {
if (instance == nullptr) { // 第一次检查
std::lock_guard<std::mutex> lock(mtx);
if (instance == nullptr) { // 第二次检查
instance = new Singleton();
}
}
return instance;
}
};
注意:C++11后可以使用magic static特性实现更简洁的线程安全单例:
cpp复制Singleton& getInstance() { static Singleton instance; return instance; }
2.2 工厂方法模式与抽象工厂
C++中实现工厂模式时,需要考虑返回对象的生命周期。这里展示一个使用unique_ptr的现代C++实现:
cpp复制class Product {
public:
