1、概念:
这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。也可以说是多个对象共用一个地址。优点在于在相应的场景下可使用,并节省空间。不是所有类都适合。
2、单例模式的实现
#单例的实现
class Singleton:
#私有化
__instance = None
#重写 __new__
def __new__(cls, *args, **kwargs):
print('-------->__new__')
if cls.__instance is None:
cls.__instance = object.__new__(cls,*args,**kwargs)
print(cls.__instance)
return cls.__instance
else:
print('已经开辟了空间')
return cls.__instance
s1 = Singleton()
s2 = Singleton()
print('s1:',s1)
print('s2:',s2)
#输出结果:
-------->__new__
<__main__.Singleton object at 0x000002EC58FBC4E0>
-------->__new__
已经开辟了空间
s1: <__main__.Singleton object at 0x000002EC58FBC4E0>
s2: <__main__.Singleton object at 0x000002EC58FBC4E0>