之前很长一段时间,对于单例模式一直理解不了,什么是单例模式,查阅了很多文档,都没有说明白,今天再次看单例模式,豁然开朗.用py实现的单例模式,代码如下所示:
class Singleton(object):
def __new__(cls, *args, **kwargs):
if not hasattr(cls, '_instance'):
orig = super(Singleton, cls)
cls._instance = orig.__new__(cls, *args, **kwargs)
return cls._instance
class MyClass(Singleton):
a = 1
one = MyClass()
two = MyClass()
two.a = 3
print(one.a)
# 3
这个时候,one,two两个对象就是相同的,后续的所有实例化对象都具有相同的属性.
即: 所谓单例就是所有引用(实例、对象)拥有相同的状态(属性)和行为(方法)