python知识点结构(五)(5.3接口)5.3.4之网络编程(222-239)之单例模式的编程思想
单例模式:适用场景为,每个实例都封装的相同的数据
静态字段+静态方法
类只在内存中创建一块内存的实例
应用场景举例:网络服务器的连接池,见下例。
1 #! /usr/bin/env python 2 3 class ConnectPool: 4 5 __instance = None 6 7 def __init__(self): 8 self.ip = '10.10.10.18' 9 self.port = '8080' 10 11 @staticmethod 12 def connectPo(): 13 if ConnectPool.__instance: 14 return ConnectPool.__instance 15 else: 16 ConnectPool.__instance = ConnectPool() 17 return ConnectPool.__instance 18 19 def getConnect(self): 20 import random 21 cntor = random.randint (1,10) 22 return cntor 23 24 obj1 = ConnectPool.connectPo() 25 cntsor = obj1.getConnect() 26 print 'obj1%s use %s connection connect internet'%(obj1,cntsor) 27 obj2 = ConnectPool.connectPo() 28 cntsor = obj2.getConnect() 29 print 'obj1%s use %s connection connect internet'%(obj2,cntsor) 30 obj3 = ConnectPool.connectPo() 31 cntsor = obj3.getConnect() 32 print 'obj1%s use %s connection connect internet'%(obj3,cntsor) 33 34 35 >>> 36 obj1<__main__.ConnectPool instance at 0x01D9BBE8> use 1 connection connect internet 37 obj1<__main__.ConnectPool instance at 0x01D9BBE8> use 2 connection connect internet 38 obj1<__main__.ConnectPool instance at 0x01D9BBE8> use 9 connection connect internet
在 Python 中,我们可以用多种方法来实现单例模式:
- 使用模块
- 使用
__new__ - 使用装饰器(decorator)
- 使用元类(metaclass)
浙公网安备 33010602011771号