→ littleshan:四人幫的Design pattern根本就不該放什麼singleton 06/10 20:24
→ littleshan:應該放context pattern才對 06/10 20:25
最近剛好在想這個問題
想要請教各位高手的看法
我有一個管理某對應表的儲存區
幾個不同的物件都會跟這個儲存區索取資料
這個對應表裡面的資料筆數與順序並不是固定的
每次執行可能會有所差異
但我必須確保所有人拿到的都是同樣一份對應表
以免發生衝突
要實作以上的描述
我第一個想到的就是singleton
不過我爬了一下文 又看了一些網路上的討論
許多人似乎都認為singleton的使用本身就是問題
那麼 這種情況如果不用singleton
比較好的解決方案應該是什麼呢?
還是說架構上根本就不應該出現這種設計?
--
直接閱讀《琴劍六記》
http://gs.cathargraph.com/p/list.html
《琴劍六記》Facebook專頁
https://www.facebook.com/GSannals
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.62.253.50
推 NDark:有人會認為singleton也不過就是某種global. 06/10 21:37
→ NDark:會需要特別在意的是 如何拿到同一份, 以及如何呼叫這個方法. 06/10 21:38
→ NDark:前者是 singleton的方法 後者是 使用者的教育 06/10 21:39
→ azureblaze:singleton的問題在於他同時有「只有一份」和 06/10 23:07
→ azureblaze:「到處都拿得到」這兩個屬性,有時候其實不該用在一起 06/10 23:07
→ pnpncat:我讀了四人幫的書和Modern C++ Design 大致瞭解singleton 06/10 23:16
→ pnpncat:的實作方式 也看了一些網路上批評singleton的意見 06/10 23:17
→ pnpncat:現在的問題比較是 不用它的話我的狀況該如何作? 06/10 23:18
→ pnpncat:a兄的意思是說應該將這兩個性質分開? 必要時再複合起來? 06/10 23:20
→ azureblaze:大部分的人用singleton的時候其實只想要「到處拿得到」 06/10 23:53
→ azureblaze:可以用global,ServiceLocator或是DependencyInjection 06/10 23:54
→ azureblaze:來取代 06/10 23:55
→ azureblaze:可是如果用了singleton哪天你發現你需要多個實體的時候 06/10 23:55
→ azureblaze:改起來就麻煩了 06/10 23:56
→ diabloevagto:用singleton重點就是只要一個實體,需要多個實體就跟 06/11 00:00
→ diabloevagto:singleton有所衝突,一開始這是整個架構的改變 06/11 00:00
推 littleshan:yoco已經在上一篇回答了你的問題,那就是放在參數 06/11 00:24
→ littleshan:實例上可以參考 Android API 的設計 06/11 00:24
推 QQ29:l大請問你有用 context 的 win32 API範例嗎? 06/11 00:35
→ QQ29:想知道你所說的context是什麼? 06/11 00:35
→ pnpncat:感謝^^! 06/11 01:28