單例對象(Singleton)是一種常用的設計模式。在Java應用中,單例對象能保證在一個JVM中,該對象只有一個實例存在,並通過這個唯一實例來向系統提供實例行爲。這樣的模式有幾個好處:
1、某些類創建比較頻繁,對於一些大型的對象,這是一筆很大的系統開銷。
2、省去了new操作符,降低了系統內存的使用頻率,減輕GC壓力。
3、有些類如交易所的核心交易引擎,控制着交易流程,如果該類可以創建多個的話,系統完全亂了。應用場合是系統需要唯一該類的實例,比如說資源管理器等。
單例模式類圖:
下面是示例代碼:
public class Singleton {
// none-lazy load
private static Singleton singleton = new Singleton();
private Singleton(){
}
public static Singleton getSingletonInstance(){
return singleton;
}
// lazy load
/*private static Singleton singleton = null;
private Singleton() {
}
public static Singleton getInstance() {
if (singleton == null) {
synchronized (Singleton.class) {
if (singleton == null) {
singleton = new Singleton();
}
}
}
return singleton;
}*/
}