一、Singleton 表明那些本質上惟一的系統組件、增長客戶端調試難度性能
二、Singleton 實現方法1:調試
- 構造器保持私有
- 導出公有靜態成員
- 享有特權的的客戶端,採用AccessibleObject.setAccessible(),經過反射機制調用 私有構造器
- 解決上述問題:能夠修改構造器,建立第二個對象拋異常
好處是:對象

三、Singleton 實現方法 2:接口
- 構造器保持私有
- 導出公有靜態成員
- 享有特權的的客戶端,採用AccessibleObject.setAccessible(),經過反射機制調用 私有構造器
好處是:序列化
- JVM都能實現,靜態工廠調用內聯化,無性能劣勢
- 更加靈活,易於修改
-

四、可序列化(Serializable)反射
- 僅僅實現接口是不夠的
- 必須說明全部實例域都是瞬時的(transient)
- 必須提供readResolve() 方法
- 不然,每次反序列化時都會建立新實例(以下,返回同一個實例)

五、Singleton 實現方法 3:方法
- 只包含單個元素的枚舉類型
- 實現 Singleton 最佳方法
- 更加簡潔
- 無償提供序列化機制
- 絕對防止屢次實例化
