首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Python常用设计模式之单例模式

Python常用设计模式之单例模式

作者头像
Wu_Candy
发布2022-07-04 16:38:22
发布2022-07-04 16:38:22
2050
举报
文章被收录于专栏:无量测试之道无量测试之道

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

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

代码语言:javascript
复制
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: 以数据库连接池为示例进行代码演示如下

代码语言:javascript
复制
import dbconfig
import pymysql

class 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.dbconn

if __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))

友情提示:“无量测试之道”原创著作,欢迎关注交流,禁止第三方不显示文章来源时转载。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 无量测试之道 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档