简介
单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在。当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场。
当一个类中的静态的值被反复调用时会造成浪费,就可以采用单例模式
实现
原理
示例:
class Foo(object):
instance = None
def __init__(self):
pass
@classmethod
def get_instance(cls, *args, **kwargs):
if Foo.instance:
return Foo.instance
else:
Foo.instance = Foo(*args, **kwargs)
return Foo.instance
obj1 = Foo.get_instance()
obj2 = Foo.get_instance()
print(obj1, obj2)
注意:这样会造成创建对象方式改变,所以采用下面的方法
通过类实现
示例:
class Foo(object):
instance = None
def __init__(self):
pass
def __new__(cls, *args, **kwargs):
if Foo.instance:
return Foo.instance
else:
Foo.instance = object.__new__(cls, *args, **kwargs)
return Foo.instance
obj1 = Foo()
obj2 = Foo()
print(obj1, obj2)
由于类的生成调用顺序为:new --> init --> call
所以在__new__中的方法最先被调用