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