2020年5月23日 下午12:09
单例模式的思路:
- 从需求的角度:
- 我们需要一个单独的方法来判断当前Singleton类是否有已有对象存在,如果存在就直接返回对象
- 注意:这里返回的必须是指向对象的指针,不能生成临时对象
Singleton* getInstance()
- 这个好像很容易实现,但是如果我们为了安全要求用户不能使用构造函数
private:Singleton(){};
- 在1,2这两个需求下,我们只能使用静态static成员方法和变量,才可能同时做到1,2,并且静态成员方法只能操作静态变量,所以我们要
static Singleton* This;static const Singleton* getInstance()
- 我们需要一个单独的方法来判断当前Singleton类是否有已有对象存在,如果存在就直接返回对象
- 两种模式的区别:
- C++ 线程安全的单例模式总结 - 掘金
- 单例模式可以分为懒汉式和饿汉式,两者之间的区别在于创建实例的时间不同:
- 懒汉式:指系统运行中,实例并不存在,只有当需要使用该实例时,才会去创建并使用实例。(这种方式要考虑线程安全)
- 饿汉式:指系统一运行,就初始化创建实例,当需要时,直接调用即可。(本身就线程安全,没有多线程的问题)
Singleton* Singleton::This = new Singleton;
附录代码:懒汉模式,非线程安全
1 | int main() |
1 |
|
1 |
|