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

2023-10-07 14:39:33 +08:00
 huzhikuizainali

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

第一种解释,给我的感觉就是大号快捷方式。就好比我每天启动电脑都要启动 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 。委托方式为了得 到同样的效果,接受请求的对象将自己传给被委托者(代理者),使被委托的操作可以引用接 受请求的对象。

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

711 次点击
所在节点    C++
1 条回复
archxm
2023-10-08 15:18:59 +08:00
其实没有必要搞这些比喻的。
你大概看一下语法,cook 手段,然后,想一想自己的业务,用一用。
不过有时候,你用别人的库、方法,因它的东西,侵入性太强,导致必须用它的某种怪异方式,来实现。这就比较绕,让你不容易理解。不过,我劝你捏住鼻子,多用用,过一段时间,自然就理解了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/979509

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX