前言
在C++中,单例模式
是一种设计模式,确保一个类只有一个实例,并且提供一个全局访问点来获取该实例。以下是单例模式的定义以及代码示例
一、单例模式的定义
单例模式
是一种创建型设计模式,确保一个类只有一个实例,并提供一个全局访问点来访问该实例。单例模式通常需要私有化构造函数以防止外部直接实例化,提供一个静态方法来获取唯一实例。
二、单例模式的代码
示例 :
class Singleton {
private:
static Singleton* instance;
Singleton() {} // 禁止外部直接创建实例
public:
static Singleton* getInstance() {
if (instance == nullptr) {
instance = new Singleton();
}
return instance;
}
};
Singleton* Singleton::instance = nullptr; // 初始化静态成员变量
int main() {
Singleton* s1 = Singleton::getInstance();
Singleton* s2 = Singleton::getInstance();
// 判断是否为同一个实例
if (s1 == s2) {
std::cout << "Same instance" << std::endl;
} else {
std::cout << "Different instances" << std =endl;
}
return 0;
}
在上述代码示例中,我们定义了一个 Singleton
类,其中包含一个静态成员指针 instance
和一个静态方法 getInstance
,用于获取单例实例。在 main
函数中,通过调用 getInstance
方法,确保只能获取到唯一的单例实例。
总结
- 确保一个类只有一个实例,并提供一个全局访问点来获取该实例,避免多次创建实例。
- 适用于需要全局共享访问和控制资源的需求,如日志模块、配置文件、数据库连接等。
- 单例模式可以节省系统资源,减小内存占用,提高效率。
- 需要注意单例模式可能造成全局变量的滥用,增加耦合度。在设计时需要考虑线程安全和调用时机等问题。