目录
单例模式
单例模式是最简单的设计模式之一,它提供了创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。即多次创建一个类的对象,得到的对象的存储地址永远与第一次创建对象的存储地址相同。
实现原理
使用装饰器和字典来实现单例模式。
实现
def fun(cls):
instance = {}
def wapper(*args, **kwargs):
if cls not in instance:
instance[cls] = cls(*args, **kwargs)
return instance[cls]
return wapper
@fun
class Demo(object):
pass
测试
def fun(cls):
instance = {}
def wapper(*args, **kwargs):
if cls not in instance:
instance[cls] = cls(*args, **kwargs)
return instance[cls]
return wapper
@fun
class Demo(object):
pass
if __name__ == '__main__':
for i in range(10):
d = Demo()
print(d)
运行结果:
<__main__.Demo object at 0x10236d668>
<__main__.Demo object at 0x10236d668>
<__main__.Demo object at 0x10236d668>
<__main__.Demo object at 0x10236d668>
<__main__.Demo object at 0x10236d668>
<__main__.Demo object at 0x10236d668>
<__main__.Demo object at 0x10236d668>
<__main__.Demo object at 0x10236d668>
<__main__.Demo object at 0x10236d668>
<__main__.Demo object at 0x10236d668>
生成的10个Demo实例其实指向一个地址,本质上是一个实例。