看单元测试的书,突然看到一个生词“委托”。去查了一下含义。得到两种“似乎”平行的解释。请教各位老师,哪种解释是对的?
第一种解释,给我的感觉就是大号快捷方式。就好比我每天启动电脑都要启动 qq ,excel ,word 三个软件。每天点三次很累。我把三个程序的快捷方式放到一个 A 文件夹里。每次双击 A 文件夹这三个程序一起启动。这个 A 文件夹就是一个委托。 依据来源: https://zhuanlan.zhihu.com/p/146341073
第二种解释就比较复杂了。以下是《设计模式--可复用面向对象的软件基础》原文: 委托(delegation) 是一种组合方法,它使组合具有与继承同样的复用能力[Lie86, JZ91] 。在委托方式下,有两个对象参与处理一个请求,接受请求的对象将操作委托给它的代 理者(delegate) 。这类似千子类将请求交给它的父类处理。使用继承时,被继承的操作总能 引用接受请求的对象,C++中通过 this 成员变扯,Smalltalk 中则通过 self 。委托方式为了得 到同样的效果,接受请求的对象将自己传给被委托者(代理者),使被委托的操作可以引用接 受请求的对象。
为什么说这两种解释是平行的。因为第一种比较简单,声明委托,定义委托(说明具体指向哪些方法或变量),使用委托。就行了。第二种怎么还有组合,继承啊,“两个对象参与处理一个请求”啊。难道没有父类子类,没有继承或组合关系。就无法使用委托? 所以以上两种解释,哪种正确?或者我的理解哪里有错,还请各位老师指正!
1
archxm 2023-10-08 15:18:59 +08:00
其实没有必要搞这些比喻的。
你大概看一下语法,cook 手段,然后,想一想自己的业务,用一用。 不过有时候,你用别人的库、方法,因它的东西,侵入性太强,导致必须用它的某种怪异方式,来实现。这就比较绕,让你不容易理解。不过,我劝你捏住鼻子,多用用,过一段时间,自然就理解了。 |