設計模式分類:結構型行為型
建立型
單例模式屬於建立型設計模式單例模式主要使用在
日誌記錄 ->將多項服務的日誌資訊按照順序儲存到乙個特定日誌檔案
資料庫操作 ->使用乙個資料庫物件進行操作,保證資料的一致性
印表機後台處理程式
以及其他程式
該程式執行過程中
只能生成乙個例項
避免對同一資源產生相互衝突的請求
單例設計模式的意圖:確保類有且只有乙個物件被建立。
為物件提供乙個訪問點,以使程式可以全域性訪問該物件。
控制共享資源的並行訪問
單例模式的 uml 圖
![](https://pic.w3help.cc/f61/1ed05f5cf7e4253a55f4f9e7b99ef.jpeg)
實現單例模式的乙個簡單方法是:使建構函式私有化
並建立乙個靜態方法來完成物件的初始化
這樣做的目的是:
物件將在第一次呼叫時建立
此後,這個類將返回同乙個物件
實踐:2020-05-091.只允許singleton類生成乙個例項。
2.如果已經有乙個例項了 則重複提供同-個物件
class
singletion(object):
def__new__
(cls):
'''覆蓋 __new__方法,控制物件的建立
'''if
not hasattr(cls,'
instance'):
'''hasattr 用來了解物件是否具有某個屬性
檢查 cls 是否具有屬性 instance
instance 屬性的作用是檢查該類是否已經生成了乙個物件
'''cls.instance = super(singletion,cls).__new__
(cls)
'''當物件s1被請求建立時,hasattr發現物件已經存在
物件s1將被分配到已有的物件例項
'''return
cls.instance
s =singletion()
'''s物件 通過 __new__ 方法進行建立
在建立之前,會檢查物件是否已存在
'''print("
物件已經建立好了:
",s)
s1 =singletion()
print("
物件已經建立好了:
",s1)
'''執行結果:
物件已經建立好了: <__main__.singletion object at>
物件已經建立好了: <__main__.singletion object at>
'''
理解設計模式 單例模式
定義 確保要建立的類只有乙個例項 對於頻繁建立的物件,可以省略其建立時間,同時可以減輕gc的壓力 避免對共享資源的多重占用 使用場景 單例模式寫法很多,這裡列舉以下三種 1 最簡單的寫法 使用列舉物件public enum singletonenum使用列舉還可以避免反射獲取類的私有構造方法從而建立...
設計模式之單例模式理解
單例,從名字上面就可以看出來,首先他肯定是乙個類例項,然後他同時只能允許乙個訪問,那麼這樣才構成了乙個單例,單例模式在我們實際開發中應用非常廣泛,比如我們建立了乙個資料庫連線池,然後又建立了乙個工具類把這個連線池與執行緒進行繫結,那麼我們就可以實現基於執行緒來實現對事務管控,資料庫連線是多次的,但是...
設計模式 單例設計模式
歷史 最早是建築學領域的模式,然後gof四人由其引申到編碼方面,總結了23種設計模式 設計模式 解決某一類事情最行之有效的方法 2.1 體現 餓漢式,保證物件的唯一性 class singleton 私有化建構函式禁止該類建立物件 private static singleton st new si...