看板 C_and_CPP 關於我們 聯絡資訊
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
littleshan:這也有範例 http://accu.org/index.php/journals/246 06/11 00:29
QQ29:l大請問你有用 context 的 win32 API範例嗎? 06/11 00:35
QQ29:想知道你所說的context是什麼? 06/11 00:35
yoco315:http://goo.gl/b1i3E 看engine那個變數,就含random的狀態 06/11 00:40
pnpncat:感謝^^! 06/11 01:28