---單例設計模式之餓漢式--- 創建SingleInstance類 1 /** 2 * 單例設計模式之餓漢式 3 */ 4 public class SingleInstance { 5 /** 6 * 私有化構造方法 7 */ 8 priv...
---單例設計模式之餓漢式---
創建SingleInstance類
1 /** 2 * 單例設計模式之餓漢式 3 */ 4 public class SingleInstance { 5 /** 6 * 私有化構造方法 7 */ 8 private SingleInstance() {} 9 /** 10 * 成員變數 11 */ 12 private static SingleInstance instance = new SingleInstance() ; 13 /** 14 * 提供一個靜態的成員方法,返回該對象 15 */ 16 public static SingleInstance getInstance() { 17 return instance ; 18 } 19 }
創建測試類SingleInstanceDemo
1 /** 2 * 單例設計模式的思想: 保證該類在記憶體中只有一個實例(對象) 3 * 優點節省記憶體,提高記憶體利用率 4 */ 5 public class SingleInstanceDemo { 6 7 public static void main(String[] args) { 8 9 // 調用方法獲取對象 10 SingleInstance instance1 = SingleInstance.getInstance() ; 11 SingleInstance instance2 = SingleInstance.getInstance() ; 12 13 // 輸出 14 System.out.println(instance1 == instance2); 15 } 16 }
-------------------------------------------------------------------------------------------------------------
---單例設計模式之懶漢式---
創建SingleInstance2類
1 /** 2 * 單例設計模式之懶漢式 3 * 4 * 面試中寫那種單例設計模式呢? 5 * 面試中寫懶漢式: 因為懶漢式體現了兩種思想, 第一種線程問題 , 第二種 延遲載入 6 * 7 * 開發中寫餓漢式 8 */ 9 public class SingleInstance2 { 10 /** 11 * 私有化構造方法 12 */ 13 private SingleInstance2() {} 14 /** 15 * 提供一個成員變數 16 */ 17 private static SingleInstance2 instance = null ; 18 /** 19 * 提供一個靜態的成員方法 20 */ 21 public static synchronized SingleInstance2 getInstance() { 22 23 if(instance == null){ 24 instance = new SingleInstance2() ; 25 } 26 return instance ; 27 } 28 }
創建測試類SingleInstanceDemo2
1 public class SingleInstance2Demo { 2 3 public static void main(String[] args) { 4 5 // 獲取對象 6 SingleInstance2 instance1 = SingleInstance2.getInstance() ; 7 SingleInstance2 instance2 = SingleInstance2.getInstance() ; 8 9 // 比較 10 System.out.println(instance1 == instance2); 11 12 } 13 14 }