[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 獨一無二的物件 整個程式中只允許有乙個物件 如資料庫連線或者執行緒池 否則 程式行為異常,資源使用過量,或者導致不一致的結果 構造器是私有的,通過呼叫靜態...