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

 

posted @ 2016-07-25 12:17  爬行的龟  阅读(108)  评论(0)    收藏  举报
如有错误,欢迎指正 邮箱656521736@qq.com