構造方法私有化 單例模式 Singleton

2021-10-25 01:45:54 字數 1328 閱讀 9656

因程式需要,有時我們只需要某個類同時保留乙個物件,不希望有更多物件,此時,我們則應考慮單例模式的設計。

例子:在日常生活中,有的時候為了出現二義性,我們把很多事情安排到乙個人來操作。

就像我們想要得到特供的茅台酒的話,我們平常人是不可能弄到的。那必須找到這個的負責人,那麼不管誰都會找這個負責人才可以。這就是外面很多人都要,但是對應的是乙個物件。

單例模式的特點:

單例模式只能有乙個例項。

單例類必須建立自己的唯一例項。

單例類必須向其他物件提供這一例項。

單例模式的實現方法:

1.懶漢式—執行緒不安全,不建議使用 懶漢式就是不在系統載入時就建立類的單例,而是在第一次使用例項的時候再建立。

2.懶漢模式—執行緒安全其實就是在這個方法上加同步。

執行緒安全,但是效率極其低下,同步鎖鎖的是物件,每次取物件都有加鎖,因此不推薦,效能很低。

3.餓漢模式—執行緒安全

這種方式基於classloder機制避免了多執行緒的同步問題,不過,instance在類裝載時就例項化,這時候初始化instance顯然沒有達到單例的效果。不推薦。

4.餓漢模式—執行緒安全

這種方法和3種一樣。

5.靜態內部類—執行緒安全

這種方式相比第三和第四種方式就顯得很合理。

6.使用列舉類—執行緒安全

測試:這種方法用的也非常的少。

7.雙重校驗模式—執行緒安全

最常用的一種。

單例模式的使用場景:

在計算機系統中,執行緒池、快取、日誌物件、對話方塊、印表機、顯示卡的驅動程式物件常被設計成單例。這些應用都或多或少具有資源管理器的功能。每台計算機可以有若干個印表機,但只能有乙個printerspooler,以避免兩個列印作業同時輸出到印表機中。每台計算機可以有若干通訊埠,系統應當集中管理這些通訊埠,以避免乙個通訊埠同時被兩個請求同時呼叫。總之,選擇單例模式就是為了避免不一致狀態,避免政出多頭。

最長見到的就是資料夾和資料夾的快捷方式一樣。在每個碟符都可以放乙個軟體的快捷方式,但是他們都對應到乙個應用程式上。如果把這乙個刪除了就不能啟動,如果這個存在,那每乙個快捷圖示都是可以啟動。

構造方法私有化與單例模式

單例模式 乙個類只有乙個例項化的物件,單例模式實現的核心是構造方法私有化,這樣就不能在類的外部建立該類的例項化物件,要想在類的外部使用構造方法私有化的類物件,只能在類的內部例項化乙個類物件,然後通過靜態方法返回該例項物件的引用,在外部進行呼叫。例如 建立乙個構造方法私有化的person類 publi...

Java 構造方法私有化與單例模式

先看乙個程式 class singleton public class test 上面的singleton類裡是存在構造方法的 如果乙個類中沒有明確的定義乙個構造方法的話,會自動生成乙個無參預設的構造方法 現在把構造方法修改一下 class singleton 構造方法私有化 public void...

0008 構造方法私有化與單例設計模式

class singleton public void print public class singletondemo02 被私有化構造方法的類不能在外部直接例項化,只能從其類的內部取得例項化物件。class singleton private singleton public void prin...