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

本文介绍了设计模式的基本概念,重点讲解了Python中的单例模式,并提供了代码实现。单例模式常用于数据库连接池、日志记录、计时器等场景,通过实例展示了如何在数据库连接池中应用该模式。
摘要由CSDN通过智能技术生成

欢迎关注【无量测试之道】公众号,回复【领取资源】,
Python编程学习资源干货、
Python+Appium框架APP的UI自动化、
Python+Selenium框架Web的UI自动化、
Python+Unittest框架API自动化、

资源和代码 免费送啦~
文章下方有公众号二维码,可直接微信扫一扫关注即可。

 

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

备注:我的个人公众号已正式开通,致力于测试技术的分享,包含:大数据测试、功能测试,测试开发,API接口自动化、测试运维、UI自动化测试等,微信搜索公众号:“无量测试之道”,或扫描下方二维码:

 添加关注,一起共同成长吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wu_Candy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值