单例模式

单例模式是23种设计模式中的一种:通常情况下,类每实例化一次便产生一个新的对象。在某些场景下,只需要保存一个实例即可,这样可以节省内存

它的特点是:

class Singleton(object):
    instance = None
    lock = threading.Rlock()

    def __new__(cls, *args, **kwargs):
        if cls.instance:
            return cls.instance


        with cls.lock:
            if not cls.instance:
                cls.instance = object.__new__(cls)
            return cls.instance

为什么这样写呢?

它的思路是:重写__new__方法,如果实例已经存在,直接返回实例,如果不存在,就__new__一个实例。

假如我们在Singleton中定义了__init__方法,那么每次实例化对象时,类的属性都会被初始化一次,也就会导致属性覆盖。

 

加锁,是因为当多线程时,不加锁仍然会创建多个实例,但不能一律用锁,而是先判断,如果已经有实例了,直接返回实例即可,没必要再进行一次加锁。

上一篇:ubuntu安装 MegaCli

下一篇:工厂模式