"委托"是不是一个超级"快捷方式"? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
huzhikuizainali
V2EX    C++

"委托"是不是一个超级"快捷方式"?

  •  
  •   huzhikuizainali 2023-10-07 14:39:33 +08:00 1032 次点击
    这是一个创建于 734 天前的主题,其中的信息可能已经有所发展或是发生改变。

    看单元测试的书,突然看到一个生词“委托”。去查了一下含义。得到两种“似乎”平行的解释。请教各位老师,哪种解释是对的?

    第一种解释,给我的感觉就是大号快捷方式。就好比我每天启动电脑都要启动 qq ,excel ,word 三个软件。每天点三次很累。我把三个程序的快捷方式放到一个 A 文件夹里。每次双击 A 文件夹这三个程序一起启动。个 A 文件夹就是一个委托。 依据来源: https://zhuanlan.zhihu.com/p/146341073

    https://www.bilibili.com/video/BV1wN411K7fc/?share_source=copy_web&vd_source=d0dfc60b858a7a9bfd33436d63b2a370&t=268

    第二种解释就比较复杂了。以下是《设计模式--可复用面向对象的软件基础》原文: 委托(delegation) 是一种组合方法,它使组合具有与继承同样的复用能力[Lie86, JZ91] 。在委托方式下,有两个对象参与处理一个请求,接受请求的对象将操作委托给它的代 理者(delegate) 。这类似千子类将请求交给它的父类处理。使用继承时,被继承的操作总能 引用接受请求的对象,C++中通过 this 成员变扯,Smalltalk 中则通过 self 。委托方式为了得 到同样的效果,接受请求的对象将自己传给被委托者(代理者),使被委托的操作可以引用接 受请求的对象。

    为什么说这两种解释是平行的。因为第一种比较简单,声明委托,定义委托(说明具体指向哪些方法或变量),使用委托。就行了。第二种怎么还有组合,继承啊,“两个对象参与处理一个请求”啊。难道没有父类子类,没有继承或组合关系。就无法使用委托? 所以以上两种解释,哪种正确?或者我的理解哪里有错,还请各位老师指正!

    archxm
        1
    archxm  
       2023-10-08 15:18:59 +08:00
    其实没有必要搞这些比喻的。
    你大概看一下语法,cook 手段,然后,想一想自己的业务,用一用。
    不过有时候,你用别人的库、方法,因它的东西,侵入性太强,导致必须用它的某种怪异方式,来实现。这就比较绕,让你不容易理解。不过,我劝你捏住鼻子,多用用,过一段时间,自然就理解了。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3323 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 10:42 PVG 18:42 LAX 03:42 JFK 06:42
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86