設計模式 理解單例設計模式

2022-06-19 11:33:13 字數 1464 閱讀 8213

設計模式分類:

結構型行為型

建立型

單例模式屬於建立型設計模式

單例模式主要使用在

日誌記錄 ->將多項服務的日誌資訊按照順序儲存到乙個特定日誌檔案

資料庫操作 ->使用乙個資料庫物件進行操作,保證資料的一致性

印表機後台處理程式

以及其他程式

該程式執行過程中

只能生成乙個例項

避免對同一資源產生相互衝突的請求

單例設計模式的意圖:

確保類有且只有乙個物件被建立。

為物件提供乙個訪問點,以使程式可以全域性訪問該物件。

控制共享資源的並行訪問

單例模式的 uml 圖

實現單例模式的乙個簡單方法是:

使建構函式私有化

並建立乙個靜態方法來完成物件的初始化

這樣做的目的是:

物件將在第一次呼叫時建立

此後,這個類將返回同乙個物件

實踐:

1.只允許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>

'''

2020-05-09

理解設計模式 單例模式

定義 確保要建立的類只有乙個例項 對於頻繁建立的物件,可以省略其建立時間,同時可以減輕gc的壓力 避免對共享資源的多重占用 使用場景 單例模式寫法很多,這裡列舉以下三種 1 最簡單的寫法 使用列舉物件public enum singletonenum使用列舉還可以避免反射獲取類的私有構造方法從而建立...

設計模式之單例模式理解

單例,從名字上面就可以看出來,首先他肯定是乙個類例項,然後他同時只能允許乙個訪問,那麼這樣才構成了乙個單例,單例模式在我們實際開發中應用非常廣泛,比如我們建立了乙個資料庫連線池,然後又建立了乙個工具類把這個連線池與執行緒進行繫結,那麼我們就可以實現基於執行緒來實現對事務管控,資料庫連線是多次的,但是...

設計模式 單例設計模式

歷史 最早是建築學領域的模式,然後gof四人由其引申到編碼方面,總結了23種設計模式 設計模式 解決某一類事情最行之有效的方法 2.1 體現 餓漢式,保證物件的唯一性 class singleton 私有化建構函式禁止該類建立物件 private static singleton st new si...