[問題] Callback未定型別時的處理方式

作者: Peruheru (還在想)   2015-11-25 14:50:26
我希望某個類別裡面有個函式
該函式的動作、輸入、輸出型態都由呼叫者決定
但實際執行的時機由該類別自己決定
類似撰寫一個輸出入型態都由自己決定的事件
而且該類別會成為集合,所以每個集合內的物件該函式的動作都不一樣
不過不知道要怎麼寫才是正確寫法,還是說這件事無法做到?
參考 http://tinyurl.com/phkcmwp 的方法,但是他要求在類別上加上<Tin, Tout>
但這樣一來我就不能用物件集合去處理它了,因為宣告變數時無法省略泛型型別
如果要維持物件集合的樣子,就變成不能用泛型而要針對每個輸出入型別各寫一個作多載
這種做法感覺實在太沒有彈性了不想這麼做阿orz
請問有沒有比較好的方法,或是我什麼地方觀念搞錯了嗎?
作者: m339606 (mize)   2015-11-25 19:17:00
看不是很懂...你要的不就是泛型嗎?
作者: pauliaia   2015-11-26 01:41:00
Chain-of-responsibility pattern 是這個嗎這是把switch case 拆出來寫的一種方法 基本上多類型別簡單的方法就是用if(物件判斷)c sharp我也很菜
作者: m339606 (mize)   2015-11-26 21:05:00
Sorry..你的舉例我看了三次還是不太明白直覺是要用interface來處理
作者: bantime (景)   2015-11-26 21:57:00
樓上..原PO的東西我有跟他要code來看..感覺上interface還是不行..因為也沒有很完整的敘述 不然也許設計上可以改因為我比較好奇return出來的東西要做什麼,有沒有可能在callback裡面處理這樣
作者: Peruheru (還在想)   2015-11-26 22:19:00
好吧我舉例難懂 囧
作者: m339606 (mize)   2015-11-26 22:49:00
不如你直接把你要想要的結果用Code表示(不用可編譯)或是用流程圖的方式來說明...
作者: Litfal (Litfal)   2015-11-26 23:35:00
如果要讓使用者簡單使用,為什麼不考慮用工廠隱藏介面建立細節?
作者: Peruheru (還在想)   2015-11-26 23:44:00
我馬上去惡補工廠模式...
作者: bantime (景)   2015-11-27 00:06:00
我是覺得工廠模式也不會是你需要的@@不然就是我沒想到適合的方式..
作者: Peruheru (還在想)   2015-12-01 10:55:00
如果我沒搞錯工廠模式的做法,他所隱藏的細節仍然是我希望使用者可以自訂的地方,如同前面提到我並不能針對細節事先決定做法,因為每個呼叫者作法可能有細微不同處所以我的類別應該無法適用工廠方法

Links booklink

Contact Us: admin [ a t ] ucptt.com