設計模式之單例模式理解

2021-10-19 05:04:59 字數 713 閱讀 1177

單例,從名字上面就可以看出來,首先他肯定是乙個類例項,然後他同時只能允許乙個訪問,那麼這樣才構成了乙個單例,單例模式在我們實際開發中應用非常廣泛,比如我們建立了乙個資料庫連線池,然後又建立了乙個工具類把這個連線池與執行緒進行繫結,那麼我們就可以實現基於執行緒來實現對事務管控,資料庫連線是多次的,但是基於連線管控的執行緒只有乙個,那麼這個工具類就可以構造成乙個單例模式,單例模式實現方式有多種,我這裡就介紹一下最基礎的餓漢式以及增強懶漢式,雙重效驗鎖,簡單明瞭並且足於應付大部分的開發工作。

顧名思義,他就是乙個餓漢,不管是什麼情況,首先他在系統類載入的時候自己就new了乙個物件出來,然後當有呼叫他的時候,他就直接使用這個物件,餓漢式在初始化的時候就載入了,像上面用到的執行緒工具類,管理資料庫連線池,那麼這個用餓漢就非常適合。

/** public static hungrysingleton getinstance()

/**

使用餓漢式確實很省事,而且他是執行緒安全的,什麼也不用考慮,但是如果所有單例物件都使用餓漢,那麼在我們系統初始化的時候,那麼對這些物件進行例項化的時候,遇到複雜物件,構建就會非常慢,影響程式啟動,所以一些非必要的單例物件,這時候就考慮要使用懶漢式,及判斷物件是否為空,如果為空即開始用時才建立物件,但是這裡就又涉及到執行緒安全問題,通常解決辦法是在方法上加synchronized關鍵字鎖住整個方法,其實他不是最優解,因為如果物件存在,不需要建立,他還是要在方法外排隊,消耗時間,因此就誕生了雙重效驗鎖。

/**

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

目錄定義 單例的作用 生活中的單例 示例 單例分類 系統中某個物件有且只有乙個例項,當這個例項建立之後我們不能也無法再次建立這個物件的例項,所有的操作只能基於這個唯一的例項。使用單例模式的最大意義在於,確保不會針對乙個物件建立多個例項,保證物件引用的唯一性和一致性。windows系統中的任務管理器,...

理解設計模式 單例模式

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

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

設計模式分類 結構型行為型 建立型 單例模式屬於建立型設計模式 單例模式主要使用在 日誌記錄 將多項服務的日誌資訊按照順序儲存到乙個特定日誌檔案 資料庫操作 使用乙個資料庫物件進行操作,保證資料的一致性 印表機後台處理程式 以及其他程式 該程式執行過程中 只能生成乙個例項 避免對同一資源產生相互衝突...