单例模式的四种方式
单例模式的四种方式 一、内容 保证一个类只有一个实例,并提供一个访问它的全局访问点 二、角色 单利 三、使用场景 当类只有一个实例而且客户可以从一个众所周知的访问点访问它时 比如:数据库链接、Socket创建链接 四、优点 对唯一实例的受控访问 单利相当于全局变量,但防止了命名空间被污染 与单利模式功能相似的概念:全局变量、静态变量(方法) 试问?为什么用单例模式,不用全局变量呢? 答、全局变量可能会有名称空间的干扰,如果有重名的可能会被覆盖 五、单例模式的四种实现方式 1、文件导入的形式(常用) s1.py class Foo(object): def test(self): print("123") v = Foo() #v是Foo的实例 s2.py from s1 import v as v1 print(v1,id(v1)) # 35788560 from s1 import v as v2 print(v1,id(v2)) # 35788560 # 两个的内存地址是一样的 # 文件加载的时候,第一次导入后,再次导入时不会再重新加载。 2、基于类实现的单例模式 # ======================单例模式:无法支持多线程情况=============== class Singleton(object): def __init__(self): import