單例模式(Singleton) 是一種平時(shí)常見的設(shè)計(jì)模式,在Java應(yīng)用中,單里模式保證在JVM中晦鞋,只存在一個(gè)實(shí)例偎血,這樣的設(shè)計(jì)模式有幾個(gè)好處:
1、對(duì)于某些類創(chuàng)建比較頻繁说庭,切內(nèi)存占用較大的對(duì)象,可以節(jié)省一大筆的系統(tǒng)開銷
2、 節(jié)省了new 的操作构订,降低了系統(tǒng)內(nèi)存的使用頻率,減少垃圾回收器(GC)的壓力
3避矢、如果一個(gè)軍隊(duì)出現(xiàn)多個(gè)將軍悼瘾,那么這個(gè)軍隊(duì)會(huì)亂成一團(tuán),對(duì)于程序也是一樣的审胸,只有使用單例模式亥宿,才能保證管理者獨(dú)立的控制整個(gè)流程。
/**
*餓漢式砂沛,一開始就加載
**/
public class Singleton {
private static Singleton ourInstance = new Singleton();
public static Singleton getInstance() {
return ourInstance;
}
private Singleton() {
}
/* 如果該對(duì)象被用于序列化烫扼,可以保證對(duì)象在序列化前后保持一致 */
public Object readResolve() {
return getInstance();
}
}
/**
*懶漢式,延遲加載碍庵,用到時(shí)才加載映企,節(jié)約資源
*/
public class SingletonTest {
private static SingletonTest instance = null;
private SingletonTest() {
}
private static synchronized void syncInit() {
if (instance == null) {
instance = new SingletonTest();
}
}
public static SingletonTest getInstance() {
if (instance == null) {
syncInit();
}
return instance;
}
}