首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java 單例模式深度理解:非靜態方法構成、多種實現方式對比

     編輯:程式設計綜合問答

初學者誤以為「類全是 static 方法就是單例」。實際上單例模式核心是全局唯一實例,static 只是手段之一。靜態方法可隨意調用、創建多個對象,無法約束實例數量。

單例核心要素

  • 私有構造器:private Singleton() {} 防止外部 new
  • 靜態私有實例:private static Singleton instance;
  • 公開靜態獲取方法:public static Singleton getInstance()

五種經典實現

模式線程安全延遲加載備註
餓漢式✓✗類加載即創建,簡單可靠
懶漢式(同步鎖)✓✓性能差,不推薦
雙重檢查鎖(DCL)✓*✓需 volatile 禁止指令重排
靜態內部類✓✓推薦:利用類加載機制天然線程安全
枚舉單例✓✗最簡潔,防反序列化破壞,Effective Java 推薦

靜態內部類示例

public class Singleton {
    private Singleton() {}
    private static class Holder {
        static final Singleton INSTANCE = new Singleton();
    }
    public static Singleton getInstance() {
        return Holder.INSTANCE;
    }
}

參考資源

菜鳥教程單例模式詳解

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved