Singleton設計模式,雙重檢查樣列如下:
public class Singleton
{
private static final Singleton singleton = null;
private Singleton()
{
}
public static Singleton getInstance()
{
if (singleton== null)
{
synchronized (Singleton.class)
{
if (singleton== null)
{
singleton= new Singleton();
}
}
}
return singleton;
}
}
簡單樣列1:
public class Singleton {
private final static Singleton instance=new Singleton();
private Singleton(){}
public static Singleton getInstance(){
return instance;
}
}
雙重檢查很通用,但是它引以為傲的是性能的優化(在getInstance被很多很多次調用的情況下).
呵呵,我就直接說結論了:在性能上最優的是 簡單樣列1 [當然也是在getInstance被很多很多次調用的情況下].
簡單樣列1是非惰性加載,所以有人要反駁說 如果我不用到Singleton 的實例豈不是白占了內存.
所以你選擇 簡單樣列1 還是 雙重檢查 是要根據你的實際情況的,如果在程序中對單列類引用的頻率是很高的,那么應該選擇 簡單樣列1,反之 雙重檢查.