Soft_Job 板


LINE

直接回应比较快. 以下都是单纯技术上说明. ※ 引述《remmurds (雷穆尔德‧小一)》之铭言: :   没错,但是「delegate是从observer pattern演变而来」这种说法绝对会让人笑掉大 : 牙。delegate确实可以拿来实作这玩意儿,但不表示delegate是因它而诞生的。 ^^^^^^^^ 这里不清楚你指的是Pattern还是Delegate Class. 如果指的是Pattern, Delegate和Observer两种的用途并不一致,可以比较, 但不应混为一谈. : → atst2:delegate就是delegate,跟observer,或function point无关. 02/19 16:25 : → atst2:真要说的话,delegate比较类似一种Template method的变型 02/19 16:25 上面是我所说的,完全是以Pattern的角度来看. 我後来又查了一下,目前以Delegate为名的Pattern还不少(其中Java有所谓的 Business Delegate, 其实应该算是Proxy的变化,) 而我所提的Delegate, 指的是Template Delegate Pattern.(这边可能大家认知上不太一样,还望其他网友补充) 这个Template Delegate会用在什麽地方呢? 就个人所接触到的例子来说, Apple的Cocoa Framework算是用的最凶的. 通常他的使用模式如下: A物件可能有一个method a, 在a里面, 可能有步骤 1, 2, 3....n 有些时候, 开发者会希望动态替换掉其中的步骤 x, 或步骤 y, 或是能在某几个步骤自行实作, 这时候Template Delegate就有用了. 他的型式会像下面(以C++为例) //example.h class DelegateOfA { public: virtual int StepX() = 0; virtual int StepY() = 0; }; class A { public: int SetDelegate(DelegateOfA*); DelegateOfA* GetDelegate(); int a(); private: DelegateOfA* _delegate; }; class B : public DelegateOfA { .... }; 而在 a method里, 原本的步骤会被替换为下: int A::a () { 1; 2; 3; ... //x _delegate->StepX(); ... _delegate->StepY(); ... n; } 这个pattern所想要达成的目标, 很接近Template所要达成的, 但比起Template来说, 这个pattern允许使用者在run-time更换不同的模组, 同时并不需要语言上有特别的支援.(这也是为什麽Cocoa大量使用的原因, 因为Obj-C 并没有template的支援) : http://msdn.microsoft.com/zh-tw/library/system.delegate.aspx : : 注意事项下方的第一段:「当委派表示在其第一个引数上关闭的执行个体方法时(最 : 常见的案例),委派会储存方法进入点(Entry Point)的参考和物件的参考」 : :   事实上在我眼中无论是function point、method reference、callback还是delegate : 其实都是大同小异的碗糕,差别只在於安不安全与便不便利罢了。delegate是我认为C#做 : 得比Java还要好的地方之一,只不过了解它好用的地方的人似乎并不多。 : :   当然这只是我个人使用经验的心得,有什麽不足之处欢迎补充说明了。 个人认为,我们现在在讨论的是不同的东西,看能不能请您贡献一下所学, 让小弟了解一下不同的pattern. --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.229.43.70
1F:→ remmurds:没错 确实是在讲不同的东西哩 02/20 08:00







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