單例模式是指某個類只允許存在一個實例對象,例如在打印機打印文件時,一次只允許打印一個文件;一個程序里的相同彈出對話框只允許有一個。
單例模式通常在需要控制對象數量以節省資源消耗的情況,在實際軟件設計中非常常用,特別是在多線程多進程時,可以避免產生多個實例對象,造成資源浪費。
實現的方法是在類里創建一個private構造函數,這樣其他類就無法通過new的方式生成其實例,只能通過類內部所定義的getInstance()方法生成實例,具有私有的構造函數是單例模式的一個顯著特征。單例模式的一個簡單示例類圖如下圖所示:
SingleInstance類的代碼如下:
package singleton;
public class SingleInstance {
//創建類時創建一個實例
private static SingleInstance singleInstance=new SingleInstance();
//私有構造函數
private SingleInstance() {};
//生成單實例
public static SingleInstance getSingleInstance() {
return singleInstance;
}
public void showMessage() {
System.out.println("單例模式信息!");
}
}
調用SingleInstance生成對象的錯誤方法:用new方法生成對象時,編譯器會報錯。
調用SingleInstance生成對象的正確方法:
public class SingletonPattern {
public static void main(String[] args) {
SingleInstance singleInstance = SingleInstance.getSingleInstance();
singleInstance.showMessage();
/*錯誤的調用方法
SingleInstance singleInstance = new SingleInstance();
*/
}
}
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
打印機
+關注
關注
10文章
768瀏覽量
45667 -
編譯器
+關注
關注
1文章
1629瀏覽量
49115
發布評論請先 登錄
相關推薦
2018年Python面試必看的10個面試題
,單例模式是最好的解決方案。__new__()在__init__()之前被調用,用于生成實例對象。利用這個方法和累的屬性的特點可以實現設計
發表于 07-18 14:52
OpenHarmony中的單例模式實踐
本文件簡述了單實例的基本知識及其應用場景,并以OpenHarmony中的代碼為例分別從C和C++語言角度來分析和學習單實例模式。單實例
發表于 09-15 09:27
利用golang優雅的實現單實例分享
1、利用golang優雅的實現單實例平時編寫代碼過程中,經常會遇到對于全局角度只需運行一次的代碼,比如全局初始化操作,設計模式中的單例
發表于 10-17 16:46
設計模式在網管系統中的設計與實現
將設計模式引入網管系統可以減少管理系統設計的復雜度,提高系統的開發效率。在分析設計模式中的Singleton模式、Adapter模式、Obs
發表于 03-04 22:20
?14次下載
關于iOS開發單例使用問題
原文鏈接:Avoiding Singleton Abuse 導語 單例(Singletons),是Cocoa的核心模式之一。在iOS上,單
發表于 09-25 16:25
?0次下載
單例模式詳解
是private的話,會不更好的封裝該內呢?我主要是應用在使用普通類模擬枚舉類型里,后來發現這就是傳說中的單例模式。構造函數弄成private 就是單
發表于 09-27 15:10
?0次下載
為什么C++單例模式不能直接全部使用static變量和static函數呢?
通過getInstance()函數獲取單例對象,這種模式的關鍵之處不是在于強迫你用函數來獲取對象。關鍵之處是讓static對象定義在函數內部,變成局部static變量。看下這種實現方式
嵌入式C語言軟件設計之裝飾器模式(Decorator Pattern)
裝飾器模式(Decorator Pattern),是結構型設計模式的一種,裝飾器模式允許向一個現有的對象添加新的功能,而又不改變其對象結構,這種方式比使用子類繼承的方式更加靈活。
發表于 03-01 10:55
?410次閱讀
評論