**的設計模式共有25種,設計模式其實是**無關的。其目的是基於oop的思想,不同應用場景應用不同的設計模式,從而達到簡化**、利於擴充套件、提示性能等目的。本文簡述python實現的單例模式場景。
簡而言之,單例模式的應用場景是所有例項物件封裝的資料都相同的場景。在這樣的場景下應用單例模式可以減少重複建立物件,從而節約記憶體。
例如,在資料庫併發連線場景中,每次連線所用到的ip、埠,使用者名稱、密碼等相同,由於每次單獨連線資料庫耗時較長,所以通常會如下圖,先建立個連線池,該連線池已與資料庫建立好鏈結,其他使用者想訪問資料時先連線到此連線池,由連線池分配鏈結,從而節約時間。 此處連線池分配連線id可簡化為下述**:
由上述簡化的**可知,每次有客戶端連線時,都會建立新的物件,以呼叫其get_connection方法。在這種重複建立物件,且物件中封裝的資料相同時,即可利用單例模式,節約記憶體提公升效能。
單例模式示例:
1以上示例,通過乙個私有變數,乙個靜態方法 get_instance()實現了一次建立物件,多次連線。class connectionpool:
2 __instance = none
3def __init__(self):
4 self.addr = '127.0.0.1'
5 self.port = 8008
6 self.name = 'sql'
7 self.conn_list = [1,2,3,4,5,6,7,8,9,10]
8 @staticmethod
9def get_instance():
10if connectionpool.__instance:
11return connectionpool.__instance
12else:
13 connectionpool.__instance == connectionpool()
14return connectionpool.__instance
15def get_connection(self):
16 r = random.randrange(1, 11)
17return r
總結下:
1. 單例只有乙個例項
2. 靜態方法、靜態字段
3. 所有封裝資料都一樣時用單例模式
python設計模式 單例模式
一 什麼是單例模式單例模式 singleton pattern 是一種常用的軟體設計模式,該模式的主要目的是確保某乙個類只有乙個例項存在。當你希望在整個系統中,某個類只能出現乙個例項時,單例物件就能派上用場。二 實現單例的方法 三 模組python 模組在第一次匯入時,會生成 pyc 檔案,當第二次...
python設計模式 單例模式
一 什麼是單例模式 單例模式 singleton pattern 是一種常用的軟體設計模式,該模式的主要目的是確保某乙個類只有乙個例項存在。當你希望在整個系統中,某個類只能出現乙個例項時,單例物件就能派上用場。二 實現單例的方法 三 模組 python 模組在第一次匯入時,會生成 pyc 檔案,當第...
Python設計模式 單例模式
單例模式 確保乙個類只有乙個例項,並且提供乙個訪問它的全域性方法 class singleton object instance none isfirstinit false def new cls,name if not cls.instance singleton.instance super ...