一、單例模式介紹
單例模式(Singleton Pattern)是 Java 中最簡單的設計模式之一。這種類型的設計模式屬於創建型模式,它提供了一種創建對象的最佳方式。
這種模式涉及到一個單一的類,該類負責創建自己的對象,同時確保只有單個對象被創建。這個類提供了一種訪問其唯一的對象的方式,可以直接訪問,不需要實例化該類的對象。
主要解決:一個全局使用的類頻繁地創建與銷燬。
關鍵代碼:將構造函數私有化。
二、代碼實現
1. 餓漢式-線程安全
public class Singleton {
private static final Singleton SINGLETON = new Singleton();
//限制產生多個對象
private Singleton() {
}
//暴露出實例對象
public static Singleton getSingleton() {
return SINGLETON;
}
//其他方法,推薦使用static修飾
public static void otherMethod() {
}
}
2. 懶漢式-線程不安全
public class Singleton2 {
private static Singleton2 singleton2 = null;
private Singleton2() {
}
//獲取對象時實例化該對象
public static Singleton2 getSingleton2() {
if (singleton2 == null) {
singleton2 = new Singleton2();
}
return singleton2;
}
}
3. 懶漢式-線程安全
使用synchronized
關鍵字修飾,保證線程安全。
public class Singleton3 {
private static Singleton3 singleton3 = null;
private Singleton3() {
}
public static synchronized Singleton3 getSingleton3() {
if (singleton3 == null) {
singleton3 = new Singleton3();
}
return singleton3;
}
}