小工具知识网

当前位置: 首页 > 行业知识 > 设计模式——单例模式

行业知识

设计模式——单例模式

2026-11-10 09:27:26 来源:互联网转载

懒汉模式

class Singleton_lazy{public:static Singleton_lazy* get(){if (sl == nullptr){sl= new Singleton_lazy;}return sl;}class Garbo{~Garbo(){if(sl)delete sl;}};private:Singleton_lazy(){}static Singleton_lazy* sl;static Garbo garbo;};Singleton_lazy* Singleton_lazy::sl = nullptr;

饿汉模式

class Singleton_hungry{public:static Singleton_hungry* get(){return sh;}class Garbo{~Garbo(){if(sh)delete sh;}};private:Singleton_hungry() {}static Singleton_hungry* sh;static Garbo garbo;};Singleton_hungry* Singleton_hungry::sh = new Singleton_hungry;

���:

()

1.把构造函数私有,是避免类外进行创建该对象。

2.把成员私有,避免类外直接对该静态成员进行赋值或者其他操作。

()

3.把成员写成静态是因为静态成员每个类只存在一份,保证了单例。

4.饿汉模式直接创建对象,该行为发生在main函数创建之前。

5.饿汉式是线程安全的,在类创建的同时就已经创建好一个静态的对象供系统使用,以后不在改变,懒汉式不一定。

6.Garbo是垃圾回收类,当garbo对象出了作用域调用析构函数释放时,会顺带释放单例对象的资源。当然这个操作不是必要的,毕竟所占内存也特别小。

上一篇:SpringBoot+Mybatis-Plus实现增删改查(配视频讲解)--项目阶段1

下一篇:光遇服务器崩了怎么卡?