单例模式:单例模式是一种常用的设计模式,该模式设计的目的就是确保一个类只能有一个实例对象存在。
单例模式举例代码如下:
1 使用类定义单例模式
class A(object)
__instance = None
def __new__(self,*args,**kwargs):
if cls.__instance is None:
cls.__instance = object.__new__(cls)
return cls.__instance
else:
return cls.__instance
2 使用装饰器定义单例模式
def func_01(cls):
_instance = {}
def _func(*args, **kargs):
if cls not in _instance:
_instance[cls] = cls(*args, **kargs)
return _instance[cls]
return _func
@func_01
class A(object):
a = 1
def __init__(self, x=0):
self.x = x
a1 = A(2)
a2 = A(3)
a1与a2内存地址如下图
单例模式应用场景:
1 资源共享的情况下,避免由于资源操作时导致性能损耗,如日志文件,应用配置等。
2 控制资源的情况下,方便资源之间的互相通信。如线程池等。