當(dāng)前位置:首頁 > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 講師博文 > Java設(shè)計(jì)模式之單例模式
功能:
保證一個(gè)類僅有一個(gè)實(shí)例,并且自行實(shí)例化,提供一個(gè)訪問它的全局訪問點(diǎn)。
適用性:
1.當(dāng)類只能有一個(gè)實(shí)例而且客戶可以從一個(gè)眾所周知的訪問點(diǎn)訪問它時(shí)。
2.當(dāng)這個(gè)唯一實(shí)例應(yīng)該是通過子類化可擴(kuò)展的,并且客戶應(yīng)該無需更改代碼就能使用一個(gè)擴(kuò)展的實(shí)例時(shí)。
描述:
把構(gòu)造方法聲明為private,確保只能由自己創(chuàng)建,避免外部創(chuàng)建實(shí)例或者被子類繼承從而創(chuàng)建額外實(shí)例。定義一個(gè)私有靜態(tài)的該類的實(shí)例作為該類的數(shù)據(jù)域,確保一個(gè)類只有一個(gè)實(shí)例。定義一個(gè)靜態(tài)工廠方法,外部類不能實(shí)例化一個(gè)該類的對(duì)象,所有只能用static的方法,提供給其他類調(diào)用返回此單例類的唯一實(shí)例。
例子:
public class Singleton {
private static Singleton sing;
private Singleton() {
}
public static Singleton getInstance() {
if (sing == null) {
sing = new Singleton();
}
return sing;
}
}
Test :
public class Test {
public static void main(String[] args) {
Singleton sing1 = Singleton.getInstance();
Singleton sing2 = Singleton.getInstance();
System.out.println(sing1);
System.out.println(sing2);
}
}
Result:
singleton.Singleton@1d78d47
singleton.Singleton@1d78d47