一個最簡單的單例:
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;
}
}
實例化然後賦值給屬性就可以了。