必要條件
- private constructor //避免重複宣告
- static 的變數 //用以參考唯一的實體
- public static 的方法 //用以存取唯一的實體
不過
還是有些地方需要注意 ===>多執行緒的時候,仍可能產生多個實體
因此
有幾個做法
- 宣高static 變數時,立即產生實體
但因為不是lazy initialization 會影響資源的配置(應該還好吧,總之有人提出這樣的質疑 - 同步化synchronized
但是只有第一次建立實體時需要透過同步化來避免 race condition,
但而後,每次存取物件(透過pulic static 的方法)都需要都進入同步區
會浪費資源 - Double-checked locking
但我覺得核心概念類似方法二
沒有留言:
張貼留言