python全栈学习笔记(十九)设计模式
设计模式一:单例模式
当所有实例中封装的数据相同时,可以使用单例模式,这里的单例指的是单个实例。
如何连接数据库,我们可以在程序和数据仓库(数据库)之间建立一个连接池,由这个连接池访问数据库

由于数据库连接,都是同一个实例,所以可以使用单例模式,使用单例模式的方法:
在类里创建静态字段,通过静态方法判断是否有创建过对象,如果没有就创建对象并赋值给静态字段,下次通过静态方法创建对象时就可以使用同一个对象。
下面就是简单的通过类方面创建的单例模式。
#!/usr/bin/env python #-*- coding:utf-8 -*- import pickle class ConnectionPool: __instance = None def __init__(self): self.ip = "1.1.1.1" self.port = 3306 self.pwd = "123123" self.username = "laoni" #去连接 self.conn_list = [1,2,3,4,5,6,7,8,9,10] @staticmethod def get_instance(): if ConnectionPool.__instance: return ConnectionPool.__instance else: #创建一个对象,并将对象赋值给静态字段__instace ConnectionPool.__instance = ConnectionPool() return ConnectionPool.__instance def get_connection(self): import random r = random.randrange(1,11) return r obj1 = ConnectionPool.get_instance() obj2 = ConnectionPool.get_instance() obj3 = ConnectionPool.get_instance() print(obj1) print(obj2) print(obj3)
结果:
C:\Python35-32\python.exe E:/pycharm/untitled/in.py
<__main__.ConnectionPool object at 0x013CAE50>
<__main__.ConnectionPool object at 0x013CAE50>
<__main__.ConnectionPool object at 0x013CAE50>
很明显三个实例是一样的
简单的创建web站点:
#!/usr/bin/env python #-*- coding:utf-8 -*- from wsgiref.simple_server import make_server def RunServer(environ, start_response): start_response(status="200 OK",headers=[("Content-Type","text/html")]) url = environ["PATH_INFO"] return "OldBoy" if __name__ == "__main__": httpd = make_server("",8000,RunServer) print("serving HTTP on port 8000...") httpd.serve_forever()

浙公网安备 33010602011771号