单例模式初级实现有三种方式:懒汉式(延迟加载但线程不安全)、饿汉式(类加载即创建、线程安全)和python模块级单例(利用导入机制天然唯一)。

单例模式的初级实现,核心就三点:类只能有一个实例、这个实例由类自己创建、所有地方拿到的都是同一个对象。
最基础的懒汉式写法
这是新手最容易理解的方式。类里设一个静态变量存实例,提供一个公共静态方法来获取它。第一次调用时创建,之后都返回已有的那个。
- 构造函数私有化,防止外部 new 出新对象
- 用 static 变量保存唯一实例
- getInstance() 方法里判断是否为空,为空才 new 一次
优点是逻辑直白、延迟加载;缺点是多线程下可能创建多个实例——两个线程同时判断 instance == null,都进去 new,就破功了。
更稳妥的饿汉式写法
不等调用,类一加载就把实例造好。直接在定义静态变量时初始化,或者用静态代码块。
- 实例在类加载阶段就诞生,天然线程安全
- 不需要做 null 判断,getInstance() 直接 return
- 但不管用不用得上,内存里始终占着一份
适合启动时就必须存在、且不担心资源浪费的场景。
Python 里的极简入门版
对 Python 新手来说,模块本身就是单例。把类实例直接写在模块顶层,导入即用,不用任何额外控制。
- 写一个 singleton.py,里面定义类 + 实例化一次
- 其他文件 from singleton import instance,拿到的就是同一个对象
- 靠 Python 解释器的模块缓存机制自动保证唯一性
没有 __new__、没有装饰器、不碰线程锁,三行代码就能跑通,是真正意义上的“初级”落地方式。










