更新時間:2022-04-29 10:13:38 來源:動力節點 瀏覽1326次
很多小伙伴對Java單例模式的使用不是很了解,動力節點小編就來為大家進行講解。單例是一種創建設計模式,它確保只有一個同類對象存在,并為任何其他代碼提供對它的單點訪問。
單例與全局變量幾乎具有相同的優點和缺點。盡管它們非常方便,但它們破壞了代碼的模塊化。
使用示例:許多開發人員認為單例模式是一種反模式。這就是為什么它在 Java 代碼中的使用量正在下降的原因。
盡管如此,Java 核心庫中還是有相當多的 Singleton 示例:
java.lang.Runtime#getRuntime()
java.awt.Desktop#getDesktop()
java.lang.System#getSecurityManager()
識別: Singleton 可以通過靜態創建方法識別,返回相同的緩存對象。
實現一個草率的 Singleton 非常容易。您只需要隱藏構造函數并實現靜態創建方法即可。
Singleton.java: 單例
包 refactoring_guru.singleton.example.non_thread_safe;
公共最終類單例{
私有靜態單例實例;
公共字符串值;
私人單例(字符串值){
// 下面的代碼模擬了緩慢的初始化。
嘗試 {
線程.sleep(1000);
} 捕捉(InterruptedException ex){
ex.printStackTrace();
}
this.value = 值;
}
公共靜態單例getInstance(字符串值){
如果(實例==空){
實例 = 新單例(值);
}
返回實例;
}
}
DemoSingleThread.java: 客戶端代碼
包 refactoring_guru.singleton.example.non_thread_safe;
公共類 DemoSingleThread {
public static void main(String[] args) {
System.out.println("If you see the same value, then singleton was reused (yay!)" + "\n" +
"If you see different values, then 2 singletons were created (booo!!)" + "\n\n" +
"RESULT:" + "\n");
Singleton singleton = Singleton.getInstance("FOO");
Singleton anotherSingleton = Singleton.getInstance("BAR");
System.out.println(singleton.value);
System.out.println(anotherSingleton.value);
}
}
OutputDemoSingleThread.txt: 執行結果
如果您看到相同的值,則重復使用單例(耶!)
如果您看到不同的值,則創建了 2 個單例(噓!!)
結果:
FOO
FOO
通過上述介紹,相信大家對Java單例模式的使用已經有所了解,希望對大家的學習能夠有所幫助哦。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習