單例模式是指某個類只允許存在一個實例對象,例如在打印機打印文件時,一次只允許打印一個文件;一個程序里的相同彈出對話框只允許有一個。
單例模式通常在需要控制對象數(shù)量以節(jié)省資源消耗的情況,在實際軟件設(shè)計中非常常用,特別是在多線程多進程時,可以避免產(chǎn)生多個實例對象,造成資源浪費。
實現(xiàn)的方法是在類里創(chuàng)建一個private構(gòu)造函數(shù),這樣其他類就無法通過new的方式生成其實例,只能通過類內(nèi)部所定義的getInstance()方法生成實例,具有私有的構(gòu)造函數(shù)是單例模式的一個顯著特征。單例模式的一個簡單示例類圖如下圖所示:
SingleInstance類的代碼如下:
package singleton;
public class SingleInstance {
//創(chuàng)建類時創(chuàng)建一個實例
private static SingleInstance singleInstance=new SingleInstance();
//私有構(gòu)造函數(shù)
private SingleInstance() {};
//生成單實例
public static SingleInstance getSingleInstance() {
return singleInstance;
}
public void showMessage() {
System.out.println("單例模式信息!");
}
}
調(diào)用SingleInstance生成對象的錯誤方法:用new方法生成對象時,編譯器會報錯。
調(diào)用SingleInstance生成對象的正確方法:
public class SingletonPattern {
public static void main(String[] args) {
SingleInstance singleInstance = SingleInstance.getSingleInstance();
singleInstance.showMessage();
/*錯誤的調(diào)用方法
SingleInstance singleInstance = new SingleInstance();
*/
}
}
-
打印機
+關(guān)注
關(guān)注
10文章
798瀏覽量
47175 -
編譯器
+關(guān)注
關(guān)注
1文章
1662瀏覽量
50203
發(fā)布評論請先 登錄
評論