2011-05-23 49 views
3

可能重複:
On Design Patterns: When to use the Singleton?什麼是單身人士的最佳人選?

嗨 只是想知道什麼是好的候選單身?

只是閱讀它並想知道如果有時我誤用了它。

一般來說,你什麼時候會使用單身?

非常感謝

+3

單身人士用於短期便利以換取維護成本的長期增加。 – 2011-05-23 20:02:56

+0

http://stackoverflow.com/questions/137975/what-is-so-bad-about-singletons – flq 2011-05-23 20:05:30

回答

0

基本上,只要我需要一個類,但我不知道我需要一個單例模式,我的代碼的單接口,但讓實現類確定是否將返回一個實例或新的實例。這樣,調用類不必擔心會發生更改,如果轉移到單身人士(或離開單身人士)應該發生。

我已經成功使用過的地方位於我的存儲庫。但是我總是在每一個單獨的答案前寫上'確保你注意線程安全,無論你走哪條路'。在處理單例時,有時奇怪的事情可能發生在多線程環境中。

+0

另一個值得注意的有趣事情是使用'Instance'屬性來構造Singleton,如果構造函數有任何邊效果。如果您在調試器中將鼠標懸停在Instance屬性上時,可能會觸發單例構造的某些副作用,而無需實際設置實例字段,從而在您逐步瀏覽時長時間副作用副作用,調試會話。 – 2011-05-23 20:08:54

+0

「,只要我需要一個類,但我不知道我需要一個單例模式,我編碼到單例接口,但讓實現類決定是否返回一個實例或新實例」:這違反了YAGNI,並且絕對讓我想起[失敗者的交配電話](http://blogs.msdn.com/b/oldnewthing/archive/2009/02/13/9416485.aspx);-) – 2011-05-23 20:27:29

+0

...(續)「在兩種體系結構之間進行選擇時,有些人會說你應該給用戶一個複選框來選擇應該使用哪一個,這是最終的懦弱的答案。你不能在兩種根本不同的方法之間做出決定,而不是選擇一種,你會說「讓我們兩個都做吧!」,從而創造出三倍,或許比選擇其中一項更重要的四倍。「 – 2011-05-23 20:28:54