單例模式不單例

一個最簡單的單例:

public class Singleton {  
    private Singleton() {}  
    private static Singleton single=null;  
    //靜態工廠方法   
    public static Singleton getInstance() {  
         if (single == null) {    
         
         
             return new Singleton();  
             
             
             
         }    
        return single;  
    }  
}

錯誤原因:

if (single == null) {    
         
             return new Singleton();  
             
         }

這個地方直接return了一個實例

雖然判斷了屬性中的單例是不是爲空

但是實例化後沒有賦值給屬性單例

所以一直爲空,每次都會去實例化一個新的

這樣就不是單例了

改正

public class Singleton {  
    private Singleton() {}  
    private static Singleton single=null;  
    //靜態工廠方法   
    public static Singleton getInstance() {  
         if (single == null) {    
             single = new Singleton();  
         }    
        return single;  
    }  
}

實例化然後賦值給屬性就可以了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章