Re: [问题] template 做 strategy pattern的问题

楼主: Sirctal (母猪母猪 夜里哭哭)   2016-09-08 20:11:48
※ 引述《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还有另外一点
,就是你如果算法有用到不想给人家知道的资料结构或是机密。那可以在用他包一层
。可是感觉不出来这样就可以不让人家看到耶...
以上问题恳请回答
谢谢
作者: CoNsTaR ((const *))   2016-09-08 21:17:00
策略看需求决定 人家会这样设计就是有他的理由你不了解别人程式的需求 那有什么好讨论的…
楼主: Sirctal (母猪母猪 夜里哭哭)   2016-09-08 21:18:00
喔喔喔 所以小弟我想了解可以有什么样的用途 谢谢
作者: CoNsTaR ((const *))   2016-09-08 21:54:00
我只是想说,你想反了 先有需求,拟定策略,才有做法而不是死记模式,然后哪个模式给我最多好处我就用他模式只是一个教你设计的范例 先假设情境再解决给你看没有人能数出所有优缺点的,因为同样做法放在不同情境就是不一样作者讲的优缺点就只是举例,教你怎么想而已,不是要你背起来每个模式都是由好几个概念组合起来的,你要学习的是其中的概念,不是模式本身要是模式本身有实用性的话早就有23 patterns 的 Lib 出来了Patterns 的展示&教学意义比实用性高太多了不要被社群的造神风气影响了,请看事物的本质所以,不会有你讲的失去好处的问题 只有最适合的方法,没有最好的方法然后用 template 当然是效能和 general 程度的取舍得到的结果不知道人家的用途也无从得知为何不要完全用 virtual 或是整个写死而选用 template 啊
楼主: Sirctal (母猪母猪 夜里哭哭)   2016-09-08 22:08:00
喔喔 了解了 谢谢
作者: bluesoul (忙死你老爸)   2016-09-08 22:43:00
事实上,strategy pattern用template 来做就是一整个奇怪
作者: CoNsTaR ((const *))   2016-09-08 22:46:00
或许是他的用词吧 不该套这个词上去的 造成误会
楼主: Sirctal (母猪母猪 夜里哭哭)   2016-09-08 22:50:00
不不不 Gof的书上确实有写到 用template做strategy但是确实就是无法run time变换算法作者也有写 所以我才好奇 这样是要怎么用所以我的问题就跟bluesoul大一样XD
作者: CoNsTaR ((const *))   2016-09-08 23:12:00
是喔 我以为可以 runtime 决策是 strategy 的重点欸!因为那代表它可以把 state 储存在 type 以外的其他地方啊用 type 纪录 state 在没有 type families 和 dependenttype 的语言里是要怎么 runtime 做决定啦XDD我也是很好奇

Links booklink

Contact Us: admin [ a t ] ucptt.com