第11课:设计模式之单例模式

单例模式可以说是最常见的设计模式
主要功能:保证类在一次调用中只一次实例化,防止多次实例化浪费服务器资源,增加程序执行效率

代码示例:
装饰器版本:
def singleton(cls, *args, **kw):
    instances = {}
    def getinstance():
        if cls not in instances:
            instances[cls] = cls(*args, **kw)
        return instances[cls]
    return getinstance

@singleton
class MyClass:
    
使用__new__方法:
class Singleton(object):
    def __new__(cls, *args, **kw):
        if not hasattr(cls, '_instance'):
            orig = super(Singleton, cls)
            cls._instance = orig.__new__(cls, *args, **kw)
        return cls._instance
 
class MyClass(Singleton):
    a = 1