Re: [問題] template 做 strategy pattern的問題

看板C_and_CPP作者 (母豬母豬 夜裡哭哭)時間9年前 (2016/09/08 12:11), 編輯推噓5(5031)
留言36則, 3人參與, 最新討論串2/4 (看更多)
※ 引述《Clangpp (Clang++)》之銘言: : 事情是這樣的,小弟目前在工作上想要用 : template 來實作strategy (因為自己在研究template的一些玩法,所以想要在工作上嘗試 : 順便利用它來避掉用virtual的成本) : 下面有一個物件叫做verifier (驗證者) 是一個interface : 底下會有好幾個他的division class 像是密碼驗證,智慧卡驗證,或是指紋驗證 : 然後各自的驗證再去實作他自己的東西 : 那其中有個function叫verify (密碼驗證就是丟密碼,智慧卡驗證要丟他的一些data : struct,而指紋驗證是要丟指紋的影像byte) : 由於參數會不同,所以template有沒有什麼樣的手段可以讓他做到參數可變化?? : 特化?? 還是說我都統一丟void *進去 各自實作的function再去解讀?? : 以上問題有請解答 謝謝 不好意思,小弟我衍伸出一些疑問。用Template實作Strategy Pattern是不是有點失 去他最大的好處?? 因為畢竟這個模式最大的賣點就是run time下可以一個介面變換 不同的演算法。那麼用template的用途是? 我為什麼不直接去call那個演算法的物件 就好了?? 還要透過你template再一層。 我看Gof的書上說Strategy Pattern還有另外一點 ,就是你如果演算法有用到不想給人家知道的資料結構或是機密。那可以在用他包一層 。可是感覺不出來這樣就可以不讓人家看到耶... 以上問題懇請回答 謝謝 -- ▁▂ 人生就是戰場,當你體會到你已經死定的事實,你自然就會做出你該做的事。▂▁ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.166.212.123 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1473336719.A.7A7.html

09/08 21:17, , 1F
策略看需求決定 人家會這樣設計就是有他的理由
09/08 21:17, 1F

09/08 21:17, , 2F
你不了解別人程式的需求 那有什麼好討論的…
09/08 21:17, 2F

09/08 21:18, , 3F
喔喔喔 所以小弟我想了解可以有什麼樣的用途 謝謝
09/08 21:18, 3F

09/08 21:54, , 4F
我只是想說,你想反了 先有需求,擬定策略,才有做法
09/08 21:54, 4F

09/08 21:54, , 5F
而不是死記模式,然後哪個模式給我最多好處我就用他
09/08 21:54, 5F

09/08 21:54, , 6F
模式只是一個教你設計的範例 先假設情境再解決給你看
09/08 21:54, 6F

09/08 21:54, , 7F
沒有人能數出所有優缺點的,因為同樣做法放在不同情境就
09/08 21:54, 7F

09/08 21:54, , 8F
是不一樣
09/08 21:54, 8F

09/08 21:54, , 9F
作者講的優缺點就只是舉例,教你怎麼想而已,不是要你背
09/08 21:54, 9F

09/08 21:54, , 10F
起來
09/08 21:54, 10F

09/08 21:54, , 11F
每個模式都是由好幾個概念組合起來的,你要學習的是其中
09/08 21:54, 11F

09/08 21:54, , 12F
的概念,不是模式本身
09/08 21:54, 12F

09/08 21:54, , 13F
要是模式本身有實用性的話早就有23 patterns 的 Lib 出
09/08 21:54, 13F

09/08 21:54, , 14F
來了
09/08 21:54, 14F

09/08 21:54, , 15F
Patterns 的展示&教學意義比實用性高太多了
09/08 21:54, 15F

09/08 21:54, , 16F
不要被社群的造神風氣影響了,請看事物的本質
09/08 21:54, 16F

09/08 22:00, , 17F
所以,不會有你講的失去好處的問題 只有最適合的方法,沒
09/08 22:00, 17F

09/08 22:00, , 18F
有最好的方法
09/08 22:00, 18F

09/08 22:00, , 19F
然後用 template 當然是效能和 general 程度的取捨得到
09/08 22:00, 19F

09/08 22:00, , 20F
的結果
09/08 22:00, 20F

09/08 22:00, , 21F
不知道人家的用途也無從得知為何不要完全用 virtual 或是
09/08 22:00, 21F

09/08 22:00, , 22F
整個寫死而選用 template 啊
09/08 22:00, 22F

09/08 22:08, , 23F
喔喔 了解了 謝謝
09/08 22:08, 23F

09/08 22:43, , 24F
事實上,strategy pattern用template 來做就是一整個奇
09/08 22:43, 24F

09/08 22:43, , 25F
09/08 22:43, 25F

09/08 22:46, , 26F
或許是他的用詞吧 不該套這個詞上去的 造成誤會
09/08 22:46, 26F

09/08 22:50, , 27F
不不不 Gof的書上確實有寫到 用template做strategy
09/08 22:50, 27F

09/08 22:51, , 28F
但是確實就是無法run time變換演算法
09/08 22:51, 28F

09/08 22:52, , 29F
作者也有寫 所以我才好奇 這樣是要怎麼用
09/08 22:52, 29F

09/08 22:55, , 30F
所以我的問題就跟bluesoul大一樣XD
09/08 22:55, 30F

09/08 23:12, , 31F
是喔 我以為可以 runtime 決策是 strategy 的重點欸!
09/08 23:12, 31F

09/08 23:14, , 32F
因為那代表它可以把 state 儲存在 type 以外的其他地方
09/08 23:14, 32F

09/08 23:14, , 33F
09/08 23:14, 33F

09/08 23:17, , 34F
用 type 紀錄 state 在沒有 type families 和 dependent
09/08 23:17, 34F

09/08 23:17, , 35F
type 的語言裡是要怎麼 runtime 做決定啦XDD
09/08 23:17, 35F

09/08 23:17, , 36F
我也是很好奇
09/08 23:17, 36F
文章代碼(AID): #1NqLMFUd (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1NqLMFUd (C_and_CPP)