c++ 单例模型模板
时间: 2024-11-15 18:26:35 浏览: 2
在C++中,单例模式是一种常用的软件设计模式,用于保证一个类只有一个实例存在,并提供全局访问点。这种模式通常在需要限制资源的创建、管理和共享时非常有用,例如数据库连接、线程池等。下面是一个简单的C++单例模式的模板实现:
```cpp
template <typename T>
class Singleton {
private:
static std::unique_ptr<T> instance; // C++11引入的独特指针,保证全局只有一份实例
// 防止实例化构造函数
Singleton() = delete;
~Singleton() = default;
public:
// 获取唯一实例
static T& getInstance() {
if (instance == nullptr) {
instance = std::make_unique<T>();
}
return *instance;
}
// 锁定实例,防止外部修改
static void lockInstance() { instance.lock(); }
static void unlockInstance() { instance.unlock(); }
};
// 静态成员初始化,避免多次尝试创建实例
template <typename T>
std::unique_ptr<T> Singleton<T>::instance = nullptr;
```
在这个模板中,`getInstance()`方法负责创建或返回已存在的单例实例。`lockInstance()`和`unlockInstance()`则是为了处理并发情况下的线程安全。
阅读全文