龙空技术网

Python设计模式:单例模式

Candy.W 573

前言:

当前你们对“单例模式python”大致比较讲究,咱们都需要知道一些“单例模式python”的相关资讯。那么小编同时在网摘上搜集了一些有关“单例模式python””的相关文章,希望大家能喜欢,朋友们快快来了解一下吧!

Step1: 什么是设计模式?

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。

Step2: 单例模式的代码实现如下

class singleton(object): # 创建一个类    mysingleton = None    def __new__(self, *args, **kwargs): #重写__new__方法        if self.mysingleton is None:            self.mysingleton = object.__new__(self) #调用用object类的__new__方法创建实例            return self.mysingleton #返回实例        else:            return self.mysingleton#返回实例,与上面的返回相同if __name__ == "__main__":    a = singleton() #实例化一个a对象    b = singleton() #实例化一个b对象    print(id(a))  #id() 函数返回对象的唯一标识符,标识符是一个整数。    print(id(b))  #如果两个一样就说明是同一个实例化对象

Step3: 单例模式的应用场景有哪些?

数据库连接池,日志logger插入,计时器、权限校验、网站计数器,windows资源管理器,回收站,线程池等资源池。

Step4: 以数据库连接池为示例进行代码演示如下

import dbconfigimport pymysqlclass singleton(object):    dbconn = None    def __new__(self, *args, **kwargs):        dbname=args        if self.dbconn is None:            self.dbconn = pymysql.connect(dbconfig.dbDict.get(dbname[0]), dbconfig.dbUser, dbconfig.dbPassword).cursor()            print("aaa")            return self.dbconn        else:            print("bbb")            return self.dbconnif __name__ == "__main__":    test = singleton("ars1")    result =test.execute("select id,code from info.property where status=1")    print(test.fetchall())    print(id(test))    test1 = singleton("ars1")    result1 = test1.execute("select id,code from info.property where status=1")    print(test1.fetchall())    print(id(test1))

标签: #单例模式python #单例模式代码