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

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

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

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

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

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

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

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

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

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._instance

if __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
    原文作者:huangkangying
    原文地址: https://blog.csdn.net/huangkangying/article/details/8656822
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞