Posted on 2008-05-22 00:09
Herbert 閱讀(588)
評論(0) 編輯 收藏 引用 所屬分類:
設計模式
Singleton(單件) 模式:
保證一個類只有一個實例,并且提供一個訪問它的全局訪問點。
假設有一個太陽類 Sun:
這樣,當有另外一個類的對象調用Sun 類的 GetInstance() 方法時,它只會返回唯一一個Sun對象。當有些類要被頻繁地調用時,如果每次調用都要進行實例化,那開銷是十分大的,這時候我們就可以考慮一下用這個模式。然而這個模式只適用于但線程,如果用于多線程,兩個或以上的對象同時調用這個實例的時候,就會涉及到線程互斥的問題了。
把Singleton模式修改一下,使它適合用于多線程,這就是Double Checked Locking 模式所要解決的問題。
只需要在 GetInstance()方法里面改一下,加一段線程互斥處理的代碼,其它不變。