/*設計模式:對問題行之有效的解決方式。其實它是一種思想。1,單例設計模式。 解決的問題:就是可以保證一個類在記憶體中的對象唯一性。必須對於多個程式使用同一個配置信息對象時,就需要保證該對象的唯一性。如何保證對象唯一性呢?1,不允許其他程式用new創建該類對象。2,在該類創建一個本類實例。3,對外提供 ...
/*
設計模式:對問題行之有效的解決方式。其實它是一種思想。
1,單例設計模式。
解決的問題:就是可以保證一個類在記憶體中的對象唯一性。
必須對於多個程式使用同一個配置信息對象時,就需要保證該對象的唯一性。
如何保證對象唯一性呢?
1,不允許其他程式用new創建該類對象。
2,在該類創建一個本類實例。
3,對外提供一個方法讓其他程式可以獲取該對象。
步驟:
1,私有化該類構造函數。
2,通過new在本類中創建一個本類對象。
3,定義一個公有的方法,將創建的對象返回。
下麵四個代碼可放在一個文件中,也可放在不同的文件。
main函數在singleDemo中,建議放在同一個文件,這樣子也不需要改動代碼即可運行
*/
1 //餓漢式 2 class Single//類一載入,對象就已經存在了。 3 { 4 private static Single s = new Single(); 5 6 private Single(){} 7 8 public static Single getInstance() 9 { 10 return s; 11 } 12 }//餓漢式
1 //懶漢式 2 class Single2//類載入進來,沒有對象,只有調用了getInstance方法時,才會創建對象。 3 //延遲載入形式。 4 { 5 private static Single2 s = null; 6 7 private Single2(){} 8 9 public static Single2 getInstance() 10 { 11 if(s==null) 12 s = new Single2(); 13 return s; 14 } 15 }//懶漢式
1 class Test 2 { 3 private int num; 4 5 private static Test t = new Test(); 6 private Test(){} 7 public static Test getInstance() 8 { 9 return t; 10 } 11 public void setNum(int num) 12 { 13 this.num = num; 14 } 15 public int getNum() 16 { 17 return num; 18 } 19 20 }Test
1 public class SingleDemo 2 { 3 public static void main(String[] args) 4 { 5 Single s1 = Single.getInstance(); 6 Single s2 = Single.getInstance(); 7 8 System.out.println(s1==s2); 9 10 // Single ss = Single.s; 11 12 // Test t1 = new Test(); 13 // Test t2 = new Test(); 14 Test t1 = Test.getInstance(); 15 Test t2 = Test.getInstance(); 16 t1.setNum(10); 17 t2.setNum(20); 18 System.out.println(t1.getNum()); 19 System.out.println(t2.getNum()); 20 } 21 }SingleDemo