1. 程式人生 > 實用技巧 >設計模式 -- 單例模式

設計模式 -- 單例模式

 1     在JAVA當中,如果我們需要建立一個物件,一般是通過該類new()一個物件,但是如果在程式當中很多地方都
 2 需要用到該物件,我們不可能這樣隨心所欲的通過new()來建立物件,因為每當我們new一個物件的時候,都會消耗
 3 對應的記憶體資源,如果該物件的內容足夠大的話,因為記憶體資源的有限,這種做法很不可取。
 4     因為我們一般使用的時候往往只需要用到該物件的一個或者幾個屬性,並不是全部都會去呼叫,所以我們可以通過
 5 單例模式來解決這個問題。
 6     單例模式又可以分為懶漢,餓漢,雙重鎖以及IODH這幾種模式,我們可以根據實際需求進行設計:
 7 
 8 首先,懶漢模式: 
9 懶漢模式是單例模式的一種,物件在需要使用的地方才會被通過getinstance()方法建立 10 //建立一個懶漢單例的實現類 11 public class LazySingleton { 12 //建立一個靜態的instance物件 ,因為我們如果想要保證全域性無論建立多少個物件,都是產生一個物件的話,必須使用static修飾 13 private static LazySingleton instance = null; 14 //無參構造方法 15 private LazySingleton() { 16 } 17 //建立一個獲得物件的方法,這樣以後在建立物件的時候就不用通過new來得到物件
18 public static LazySingleton getInstance() { 19 if (instance == null) { 20 instance = new LazySingleton(); //如果這個物件還不存在,我們就建立一個 21 } 22 return instance; //如果這個物件已經被建立過來,就直接返回物件本身 23 } 24 //測試效果 25 public static void main(String[] args) { 26 //建立3個懶漢模式物件
27 LazySingleton lsl1 = LazySingleton.getInstance(); 28 LazySingleton lsl2 = LazySingleton.getInstance(); 29 LazySingleton lsl3 = LazySingleton.getInstance(); 30 //輸出,結果這三個物件的引用地址都是一樣的 31 System.out.println(lsl1);//creationalpattern.singleton.lazy.LazySingleton@135fbaa4 32 System.out.println(lsl2);//creationalpattern.singleton.lazy.LazySingleton@135fbaa4 33 System.out.println(lsl3);//creationalpattern.singleton.lazy.LazySingleton@135fbaa4 34 } 35 }