本文共 1073 字,大约阅读时间需要 3 分钟。
目录
单例模式是最简单的设计模式之一,它提供了创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。即多次创建一个类的对象,得到的对象的存储地址永远与第一次创建对象的存储地址相同。
使用装饰器和字典来实现单例模式。
def fun(cls): instance = {} def wapper(*args, **kwargs): if cls not in instance: instance[cls] = cls(*args, **kwargs) return instance[cls] return wapper@funclass 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@funclass Demo(object): passif __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实例其实指向一个地址,本质上是一个实例。
转载地址:http://adsoi.baihongyu.com/