CSSE 板


LINE

※ 引述《tinlans ( )》之铭言: : visitor 我印象中跟 double dispatch 没啥关系, : double dispatch 是 multimethod 的一种实现方式, : 的确像是 Haskell 和 Dylan 这些语言就有支援, : 主要是你希望 obja.method(objb) 这样写的时候, : 实际会是哪个 method 被 call 到, : 不但要看 obja 的实际型别, : 还要看 objb 的实际型别才能决定, : 否则你必然得在 obja 实际型别的 method 里, : 写一大串 if else 搭 typeid 和 dynamic_cast 判断 objb 的实际型别才能搞定, : 这个部分通常被称为 type switch, : 在 C++ 的 OO 程式码里算是一大恶例。 似乎与我的认知不太一样 因为在GoF的书中 在visitor的实作部份有写道 visitor要达成的效果就是double dispatch : : 版上各位对design pattern的看法又是如何呢?在实际使用方面呢? : : 我平常写程式时也常会使用一些基本的pattern : : 像是singleton, factory, visitor 但对有些pattern还是未能运用自如 : : 我觉得pattern是还蛮重要的 可以把思考提升一个层次 : : 学习pattern除了看书外 假如能碰到需要使用的场合 : : 使用过几次 看到问题就能想到pattern : : 这方面光看书应该比较难体会 一些实务经验似乎是必需 : : 版主之前有发表过关於pattern的文章 但似乎是持反对立场 : : 不知道我们应该对pattern持什麽样的态度呢? : singleton 和 factory 简单来说就是防白目用的, : 或是防止自己耍白痴, : team work 的时候常常有很多白目讲不听又不看文件和注解, : 白话来说这两个 patterns 是预防这些状况发生的策略之一, : 不过考试这样作答零分就是了, : 因为它们存在的意义不只是这些, : 我没讲的教科书应该都有讲了。 没错 把规则写到CODE里 比写到文件里有用得多 但是还是有人会"咦 这个class怎麽没ctor 我改一下api喔" Orz : visitor 的话我建议是尽量少用, : 它在 OO design pattern 界里面受争议的程度, : 跟 procedural programming 里的 goto 差不多, : 不是绝对不可以用, : 也不是说用了一定会不好, : 而且也的确有它有用的地方。 : 至於用到它的时机, : 简单说就是做一些 dirty work 的时候会用到, : 一般来说会伴随着实务上某些奇怪的要求, : 才会让你非用它不可, : 它的实现手法事实上也蛮肮脏的。 compiler实作时有时需要爬很多树 像AST, IL等 也算是visitor最典型的用法 不知道大大指的的dirty work是指什麽 可以给个明确的例子吗 这方面经验不多 还请大大指教 : : [1] http://fcamel.twbbs.org/archives/2007/01/14/247/ : : [2] http://en.wikipedia.org/wiki/Design_pattern_(computer_science)#Criticism : : [3] http://en.wikipedia.org/wiki/Double_dispatch 昨天又想了一下 想到「人月神话」中的no silver bullet 软体的问题有2种 一种是Essential Difficulties 另一种是Accidental Difficulties 像是design pattern解决的算是因为工具选择所带来的Accidental Difficulties 还是软体本来就需要套用pattern? --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.30.72.148 ※ 编辑: ellinas 来自: 61.30.72.148 (02/09 09:34) ※ 编辑: ellinas 来自: 61.30.72.148 (02/09 09:45)







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BuyTogether站内搜寻

TOP