使用靜態關鍵字實現單例模式 單例模式:只能獲得某個類的唯一一個實例 單例模式,不管什麼時間點得到的對象都是同一個對象 看下麵代碼: 將構造方法私有,以便實現外部無法使用new進行實例化的效果,達到任何時候其實都是同一個對象的效果 測試代碼如下: 結果如下: 該結果表明:single、single2、 ...
使用靜態關鍵字實現單例模式
單例模式:只能獲得某個類的唯一一個實例
單例模式,不管什麼時間點得到的對象都是同一個對象
看下麵代碼:
/** * 單例模式 * @author xiongda * @date 2018年4月15日 */ public class SingletonMode { private static SingletonMode single =null; public int number = 1; //將構造方法定義為私有 private SingletonMode(){ single=this; } public static SingletonMode getInstance(){ if(single==null){ single=new SingletonMode(); } return single; } }
將構造方法私有,以便實現外部無法使用new進行實例化的效果,達到任何時候其實都是同一個對象的效果
測試代碼如下:
public class Testit { public static void main(String[] args) { // TODO Auto-generated method stub SingletonMode single =SingletonMode.getInstance(); System.out.println("single的number值:"+single.number); SingletonMode single2 =SingletonMode.getInstance(); single2.number=100; SingletonMode single3 =SingletonMode.getInstance(); System.out.println("single3的number值:"+single3.number); System.out.println(single2==single3); } }
結果如下:
該結果表明:single、single2、single3這些引用指向的都是同一個對象
單例模式的應用:比如游戲視窗,通過單例模式來控制不能多開