單例模式(單件模式)

2021-08-29 17:25:44 字數 1079 閱讀 1814

[color=red][size=medium]單件模式,就是確保乙個類只有乙個例項,並提供乙個全域性訪問點。[/size][/color]

單例的作用是獨一無二,比方說,如果有乙個登錄檔設定的物件,你不希望這樣的物件有多個拷貝吧,那會把設定搞得一團亂,利用像單例這樣的單件物件,可以確保程式中使用的全域性資源只有乙份。

單件常常被用來管理共享資源,例如資料庫連線或者執行緒池。

/*** @author zhq426**/

public class singleton

/*** 用getinstance()方法例項化物件,並返回這個例項。

* @return

*/public static singleton getinstance()

return uniqueinstance;

}public void test()

//other methods singleton 是乙個正常的類,

//具有一些其他用途的例項變數和方法。

}

uniqueinstance 擁有「 乙個」例項,別忘記了,它是乙個靜態變數,如果uniqueinstance是空的,表示還沒有建立例項,而如果不存在,我們就利用私有建構函式產生乙個例項並把它賦值到靜態變數中,請注意,如果我們不需要這個變數,它就永遠不會產生。這就是「延遲」例項化。

[color=red]以上說的是在單錢程時是不會產生多個例項的,如果在多執行緒呢???[/color]

[img]

1. 只要把getinstance()變成同步(synchronized)方法,多執行緒災難就可以輕易的解決了,

2. 使用多執行緒,使效率降低了,可以使用急切建立例項的,而不用延遲例項化的做法。改方法變成

private static singleton uniqueinstance=new singleton();

3. 或者使用「雙重檢查加鎖」,在getinstance()中減少使用同步。

if(uniqueinstance==null)}}

單件模式(單例模式)

readme 0.1 本文部分描述 head first 設計模式 旨在學習 單件模式 單例模式 的相關知識 及其應用 單件模式 1.0 單件模式的應用背景 有一些物件其實我們只需要乙個,比方說 執行緒池,快取,對話方塊,登錄檔等的物件,這都可以通過單件模式來解決 1.1 定義 確保乙個類只有乙個例...

單件模式(單例模式)

1 單件模式 確保乙個類只有乙個例項,並提供乙個全域性訪問點。2 經典的單件模式實現 public class singleton public static singleton getinstance return uniqueinstance 問題點 public static singleto...

5 單件模式(單例模式)

head first design patterns master src headfirst designpatterns singleton 獨一無二的物件 整個程式中只允許有乙個物件 如資料庫連線或者執行緒池 否則 程式行為異常,資源使用過量,或者導致不一致的結果 構造器是私有的,通過呼叫靜態...