zoukankan      html  css  js  c++  java
  • Python常用设计模式之单例模式

    欢迎关注【无量测试之道】公众号,回复【领取资源】,
    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: 以数据库连接池为示例进行代码演示如下

     1 import dbconfig
     2 import pymysql
     3  
     4 class singleton(object):
     5     dbconn = None
     6     def __new__(self, *args, **kwargs):
     7         dbname=args
     8         if self.dbconn is None:
     9             self.dbconn = pymysql.connect(dbconfig.dbDict.get(dbname[0]), dbconfig.dbUser, dbconfig.dbPassword).cursor()
    10             print("aaa")
    11             return self.dbconn
    12         else:
    13             print("bbb")
    14             return self.dbconn
    15  
    16 if __name__ == "__main__":
    17     test = singleton("ars1")
    18     result =test.execute("select id,code from info.property where status=1")
    19     print(test.fetchall())
    20     print(id(test))
    21     test1 = singleton("ars1")
    22     result1 = test1.execute("select id,code from info.property where status=1")
    23     print(test1.fetchall())
    24     print(id(test1))

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

     

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

  • 相关阅读:
    WCF 客户端调用几种方式
    Mes首检确认统计的存储过程
    C#调用webService的几种方法
    负载均衡SESSION同步总结
    CCF201604-3 路径解析(解法三)(90分)
    CCF201604-3 路径解析(解法三)(90分)
    CCF201604-3 路径解析(解法二)(100分)
    CCF201604-3 路径解析(解法二)(100分)
    CCF201604-3 路径解析(100分)
    CCF201604-3 路径解析(100分)
  • 原文地址:https://www.cnblogs.com/Wu13241454771/p/13072430.html
Copyright © 2011-2022 走看看