设计模式之单例模式(python实现)

来源:互联网 发布:精易编程助手下载 编辑:程序博客网 时间:2024/05/29 09:34

本小节要介绍的设模式是:单例模式

个人认为,单例模式是所有的设计模式中较为简单的一个模式,但别看它简单,在实际的应用中却实使用得相当广泛。

单例模式主要被应用在这样的场景中:在程序的运行过程中始终保持一个对象。如线程池,注册表,缓存管理。这些对象如果在程序中保持多个实例,那么在程序的运行中会出现许多问题。

下面给出单例模式的一个简单定义:

确保一个类只有一个实例,并提供一个全局的访问点

说到这里,你可能会一下想到一个概念:全局变量。

的确,全局变量也可以实现一个类似于单例的功能,但全局变量在程序的一开始就会被实例化。如果这个全局变量在程序的运行过程中一次也没有被用到,那这个全局变量所占用的资源就会被白白地浪费掉。因此全局变量是无法做到申请时创建的。

好了,话不多说,看代码吧:

class Singleton(object):    ''' A python style singleton '''    def __new__(cls, *args, **kw):        if not hasattr(cls, '_instance'):            org = super(Singleton, cls)            cls._instance = org.__new__(cls, *args, **kw)        return cls._instanceif __name__ == '__main__':    class SingleSpam(Singleton):        def __init__(self, s):            self.s = s        def __str__(self):            return self.s    s1 = SingleSpam('spam')    print id(s1), s1    s2 = SingleSpam('spa')    print id(s2), s2    print id(s1), s1


原创粉丝点击