Python设计模式 - 单例模式

"""

单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。

实现“某个类只有一个实例”途径:

1、让一个全局变量使得一个对象被访问,但是它不能防止外部实例化多个对象。

2、让类自身负责保存它的唯一实例。这个类可以保证没有其他实例可以被创建。即单例模式。

多线程时的单例模式:加锁——双重锁定。

饿汉式单例类:在类被加载时就将自己实例化(静态初始化)。其优点是躲避了多线程访问的安全性问题,缺点是提前占用系统资源。

懒汉式单例类:在第一次被引用时,才将自己实例化。避免开始时占用系统资源,但是有多线程访问安全性问题。

"""

#单例模式


def printInfo(info):

    print unicode(info, 'utf-8').encode('gbk')


import threading

#单例类

class Singleton():

    instance = None

    mutex = threading.Lock()  

    def __init__(self):

        pass


    @staticmethod

    def GetInstance():

        if(Singleton.instance == None):

            Singleton.mutex.acquire() 

            if(Singleton.instance == None):

                printInfo('初始化单例')

                Singleton.instance = Singleton()

            else:

                printInfo('单例已经初始化')  

            Singleton.mutex.release()

        else:

            printInfo('单例已经初始化')        

        return Singleton.instance


def main():

    Singleton.GetInstance()

    Singleton.GetInstance()

    Singleton.GetInstance()

    return


if __name__ == '__main__':

    main();

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 相信大家都知道设计模式,听的最多的也应该是单例设计模式,这种模式也是在开发中用的最多的设计模式,可能有很多人会写几...
    之后_90阅读 3,068评论 0 0
  • 上一篇,主要说明了一下MVC这种常见的开发模式,本篇我们来说一下另一种常见的设计思路(单例) 什么是单例模式?在回...
    金鱼座阅读 1,300评论 0 0
  • 本篇主要介绍一下关于Python的单例模式,即让一个类对象有且只有一个实例化对象。 一、使用new方法(基类)  ...
    Littlefive的微博阅读 1,098评论 0 0
  • 单例模式(Singleton Pattern)是 编程语言中最简单的设计模式之一。这种类型的设计模式属于创建型模式...
    Hi夜城阅读 3,226评论 1 10
  • 有点心累,喝了酒,宿醉一晚上。 明天,加油^0^~
    唐空空阅读 871评论 0 0