目录
一、什么是单例设计模式
单例设计模式(Singleton Pattern)是一种常用的软件设计模式,它确保一个类只有一个实例存在,并提供一个全局访问点。这种模式在需要控制实例数目、节省系统资源或确保全局一致性时非常有用。
核心特点
-
唯一性:保证一个类只有一个实例存在
-
全局访问:提供全局访问该实例的方法
-
延迟初始化:通常采用懒加载方式创建实例
二、为什么需要单例模式
典型应用场景
-
资源管理器:如音乐播放器、打印机管理
-
配置系统:全局配置信息只需要一个实例
-
日志系统:所有日志写入同一个文件
-
数据库连接池:避免频繁创建连接
-
缓存系统:全局共享缓存数据
优势对比
| 模式 | 实例数量 | 资源消耗 | 适用场景 |
|---|---|---|---|
| 普通类 | 多个 | 高 | 需要多个独立实例 |
| 单例类 | 单个 | 低 | 需要全局唯一实例 |
三、Python实现单例的三种方式
1. 使用__new__方法(经典实现)
class Singleton:
_instance = None # 类属性存储唯一实例
def __new__(cls, *args, **kwargs):
if not cls._instance: # 如果实例不存在
cls._instance = super().__new__(cls) # 创建新实例
return cls._instance # 返回唯一实例
# 测试
s1 = Singleton()
s2 = Singleton()
print(s1 is s2) # 输出: True
2. 使用装饰器实现
def singleton(cls):
instances = {}
def get_instance(*args, **kwargs):
if cls not in instances:
instances[cls] = cls(*args, **kwargs)
return instances[cls]
return get_instance
@singleton
class ConfigManager:
pass
# 测试
cfg1 = ConfigMana

最低0.47元/天 解锁文章
347

被折叠的 条评论
为什么被折叠?



