说出单例模式的一种设计思路
时间: 2024-06-18 17:01:01 浏览: 8
单例模式是一种常用的软件设计模式,其目标是确保系统中只有一个实例存在,并提供全局访问点。以下是使用一种常见的懒汉式(懒加载)设计思路来创建单例:
1. **懒加载(延迟初始化)**:这是最常见的实现策略,只有当第一次请求单例时才创建。这样可以避免早期的资源消耗。
```cpp
class Singleton {
private:
static Singleton* instance;
Singleton() {} // 构造函数为私有,防止直接创建实例
public:
static Singleton* getInstance() {
if (instance == nullptr) {
instance = new Singleton();
}
return instance;
}
// 其他公共方法...
};
```
在这个例子中,`getInstance` 方法会检查是否已经创建了实例,如果没有,则创建并返回;如果有,直接返回已存在的实例。
2. **双重检查锁定**(Double-Checked Locking):为了进一步提高性能,可以使用双重检查锁定,只有在没有获取锁时才创建实例。但这需要更复杂的代码和对线程安全的考虑。
```cpp
std::mutex mutex;
Singleton* Singleton::instance_ = nullptr;
Singleton* Singleton::getInstance() {
std::lock_guard<std::mutex> lock(mutex);
if (instance_ == nullptr) {
instance_ = new Singleton();
}
return instance_;
}
```
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)