----------
android培訓、java培訓、期待與您交流! ----------
java中存在23種設計模式,其中,單例模式確保某一個類只有一個執行個體,而且自行執行個體化並向整個系統提供這個執行個體。這個類稱為單例類
單例設計模式的要點:
1.類只能有一個執行個體
2.它能自行建立這個執行個體
3.必須向系統提供調用此執行個體的方法
如何確保對象的唯一性:
1.為了避免其他程式過多的建立該類對象,就必須禁止其他程式建立該類對象
2.為了讓其他程式可以訪問到該類對象,只好在本類中,自訂一個對象
3.為了方便其他程式對自訂對象的訪問,必須對外提供一些訪問方式
以上三點的代碼體現:
1.將建構函式私人化
2.在類中建立一個本類對象
3.提供一個方法可以擷取到該對象
在java中用代碼實現單例設計模式,在這我主要是分析兩種方法:懶漢式和餓漢式
餓漢式:關鍵代碼:
class Single{private Single(){}private static Single s = new Single();public static Single getInstance(){return s;}}
懶漢式:
關鍵代碼:
class Single{private static Single s = null;private Single(){}public static Single getInstance(){if(s==null){synchronized(Single.class){if(s==null)s = new Single();}}return s;}}
在後來的學習中,發現了枚舉也能實現單例設計,它利用的原理就在於,枚舉類型規定你只能用它裡面設定的成員,所以,只有一個成員的時候,就是單例了。
枚舉實現關鍵代碼
public enum SingleInstance{/*提供了一個可以訪問的枚舉成員*///singleInstance;//預設是不帶參的建構函式singleInstance(2);//使用帶參的建構函式private SingleInstance(){System.out.println("default constructor");};//建構函式private SingleInstance(int i){System.out.println("param constructor"+"..."+i);};//帶參的建構函式public void method(){System.out.println("我是方法");};//方法}}
----------
android培訓、java培訓、期待與您交流! ----------
詳情請查看:http://edu.csdn.net/heima/