设计模式——单例模式
参考链接:https://www.cnblogs.com/huchong/p/8244279.html
单例模式:
单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在。例如,某个服务器程序的配置信息存放在一个文件中,客户端通过一个名称为AppConfig的类来读取配置信息。程序运行期间,可能很多地方都需要使用配置文件的内容,很多地方就会创建AppConfig类的实例,这样就会导致系统中存在多个AppConfig类的实例,会严重浪费内存资源,因此,我们希望AppConfig这样的类在程序运行期间只存在一个实例。
实现单例模式的几种方式:
1.使用模块
Python的模块就是天然的单例模式。因为模块在第一次导入就会生成.pyc文件,当第二次导入时会直接加载.pyc文件,而不会再次执行模块代码,所以我们只需要把相关函数定义在一个模块中,就可以获得一个单例对象。
# mysingleton.py class Singleton: def foo(self): pass singleton = Singleton()
将上面的代码保存在文件mysingleton.py中,使用时直接在其它文件中导入此文件中对象,这个对象就是单例模式对象。
2.使用装饰器
def Singleton(cls): _instance = {} def _singleton(*args, **kargs): if cls not in _instance: _instance[cls] = cls(*args, **kargs) return _instance[cls] return _singleton @Singleton class A(object): a = 1 def __init__(self, x=0): self.x = x a1 = A(2) a2 = A(3)
3.使用类
4.基于__new__方法实现(推荐)
5.基于metaclass方式实现
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix