2016年9月21日 星期三

Singleton






為了確保 只能有一個實體存在的場合(e.g., Thread pool、Runtime、Cache )即可使用這個樣式

必要條件

  1. private constructor //避免重複宣告

  2. static 的變數 //用以參考唯一的實體

  3. public static 的方法 //用以存取唯一的實體
不過
還是有些地方需要注意 ===>多執行緒的時候,仍可能產生多個實體

因此
有幾個做法

  1. 宣高static 變數時,立即產生實體
    但因為不是lazy initialization  會影響資源的配置(應該還好吧,總之有人提出這樣的質疑
  2. 同步化synchronized
    但是只有第一次建立實體時需要透過同步化來避免 race condition,
    但而後,每次存取物件(透過pulic static 的方法)都需要都進入同步區
    會浪費資源
  3. Double-checked locking
    但我覺得核心概念類似方法二

沒有留言:

張貼留言