欢迎光临
我们一直在努力

单例模式:5种手写实现、优缺点、生产选型

博客导语

单例模式:全局仅有一个实例,重复实例化返回同一个对象。适用于日志工具、数据库连接池、全局配置类。整理面试全部5种手写方案,对比线程安全、实现难度。


一、模块导入单例(生产首选,最简单)

Python模块天然单例:模块只会导入一次,全局共享同一个对象,无需手写代码,线程绝对安全,企业90%场景使用。


二、__new__方法重写(入门常用)

class Singleton:
__instance = None
def __new__(cls, *args, **kwargs):
if cls.__instance is None:
cls.__instance = super().__new__(cls)
return cls.__instance
# 多次实例化地址完全一致

缺陷:多线程高并发会出现重复实例,线程不安全


三、线程安全加锁版单例

通过threading锁解决并发冲突,适合多线程爬虫、接口服务


四、装饰器实现单例

通用装饰器,任意类快速转为单例,复用性最强


五、元类metaclass实现单例

底层最高级写法,控制类创建过程,难度最高,面试压轴考点


五类方案选型总结

  • 生产业务:优先模块单例,零BUG、最简单

  • 普通单例:__new__写法,单线程使用

  • 多线程:加锁版单例

  • 通用复用:装饰器单例

  • 面试作答:元类单例

  • 赞(0)
    未经允许不得转载:171主机测评 » 单例模式:5种手写实现、优缺点、生产选型
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址