Posted on 2007-11-28 20:39
flustar 閱讀(702)
評論(1) 編輯 收藏 所屬分類:
Design Patterns
《設計模式》一書對Singleton模式是這樣描述的:
保證一個類只有一個實例,并提供一個訪問它的全局訪問點。
這個模式比較簡單,下面給出一個例子:
public class Singleton {
private static Singleton instance;
private Singleton(){
}
public static Singleton getInstance(){
if(instance==null)
instance=new Singleton();
return instance;
}
}
這個程序在單線程下運行不會有問題,但是它不能運行在多線程的環境下,若想讓運行在多線程的環境下,必須修改如下:
public class Singleton {
private static class Instance{
static final Singleton instance=new Singleton();
}
private Singleton(){
}
public static Singleton getInstance(){
return Instance.instance;
}
}
這樣做之所以可以,是因為靜態的內部類Instance只會被裝載一次。運行在多線程下的單態設計模式也叫Double-Checked Looking模式。