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
View Code

 

 

在 Python 中,我们可以用多种方法来实现单例模式:

  • 使用模块
  • 使用 __new__
  • 使用装饰器(decorator)
  • 使用元类(metaclass)

posted on 2016-07-02 10:15  lexn  阅读(73)  评论(0)    收藏  举报

导航