單例模式是指某個類只允許存在一個實(shí)例對象,例如在打印機(jī)打印文件時,一次只允許打印一個文件;一個程序里的相同彈出對話框只允許有一個。
單例模式通常在需要控制對象數(shù)量以節(jié)省資源消耗的情況,在實(shí)際軟件設(shè)計中非常常用,特別是在多線程多進(jìn)程時,可以避免產(chǎn)生多個實(shí)例對象,造成資源浪費(fèi)。
實(shí)現(xiàn)的方法是在類里創(chuàng)建一個private構(gòu)造函數(shù),這樣其他類就無法通過new的方式生成其實(shí)例,只能通過類內(nèi)部所定義的getInstance()方法生成實(shí)例,具有私有的構(gòu)造函數(shù)是單例模式的一個顯著特征。單例模式的一個簡單示例類圖如下圖所示:
SingleInstance類的代碼如下:
package singleton;
public class SingleInstance {
//創(chuàng)建類時創(chuàng)建一個實(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生成對象的錯誤方法:用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();
*/
}
}
-
打印機(jī)
+關(guān)注
關(guān)注
10文章
798瀏覽量
47199 -
編譯器
+關(guān)注
關(guān)注
1文章
1662瀏覽量
50228
發(fā)布評論請先 登錄
dlpc3470 Splash Pattern模式為什么會設(shè)置最大Pattern周期,這個最大周期能否更改?
DLP4500每個pattern的曝光時間怎么設(shè)置?
請問external pattern sequence子模式的正確使用方式是什么?
DLP中video模式與pattern模式有什么區(qū)別?
2018年P(guān)ython面試必看的10個面試題
OpenHarmony中的單例模式實(shí)踐
利用golang優(yōu)雅的實(shí)現(xiàn)單實(shí)例分享
關(guān)于iOS開發(fā)單例使用問題
單例模式詳解
單例模式分成餓漢模式和懶漢模式解析
為什么C++單例模式不能直接全部使用static變量和static函數(shù)呢?
嵌入式C語言軟件設(shè)計之裝飾器模式(Decorator Pattern)
Python實(shí)現(xiàn)單例模式的五種寫法
php設(shè)計模式和應(yīng)用場景
OpenHarmony鴻蒙開發(fā)學(xué)習(xí):【Ability的啟動模式】

評論