![]() |
1
21
用最简单的术语来说,它本质上是一个指向方法的指针。 可以有一个包含委托类型的变量(就像有一个可以包含int类型的int变量一样)。通过像函数一样简单地调用变量,可以执行委托所指向的方法。 这允许您拥有变量函数,就像您可能拥有变量数据一样。对象可以接受其他对象的委托并调用它们,而不必定义所有可能的函数本身。 当您希望对象根据用户指定的条件执行操作时,这非常方便。例如,根据用户定义的真/假表达式筛选列表。您可以让用户指定委托函数,以用作评估每个列表项所依据的筛选器。 |
![]() |
2
30
我有一个功能:
这个功能很糟糕。如果我想要3*3呢?
打字太多了。我懒惰!
我的
下面是另一个函数:
与它的名字相反,dosomethingrad实际上并没有做任何rad的事情。然而,它确实写出了16的平方(4)。我们能把它改成不那么无聊吗?
如果有办法改变传入的号码,那就太好了。也许我们不想把它平方;也许我们想把它平方,或者从69中减去它(从我的头脑中随机选择的数字)。
经进一步检查,似乎
看看有多相似
所以现在如果我们想写出一个数的平方,我们可以
所以我们得出:
我们可以通过编写以下命令来调用此方法:
我们不需要给任何参数
如果你明白我说的话,那么你已经有一个提升我,因为我自己并没有真正得到这些东西。 *结束回答,开始胡思乱想*
我是说,好像
也就是说,什么是数据和行为之间的界限似乎模糊了,而通常被视为数据的只是无聊的屁股行为。 当然,人们可以想象超级“有趣”的行为,它需要各种抽象参数,但需要大量信息才能调用它。如果它要求我们提供它将为我们编译和运行的源代码呢?
好吧,那么我们的抽象似乎让我们回到了原点。我们有如此抽象的行为,它需要我们程序的整个源代码来决定它要做什么。这是完全不确定的行为:函数可以
任何东西
,但必须提供
一切
以确定它的作用。另一方面,完全确定的行为,例如
那又怎么样?我不知道。 |
![]() |
3
3
|
![]() |
4
3
有趣的是,没有人提到授权的一个关键好处——当你意识到继承不是一个灵丹妙药,通常会产生比它解决的问题更多的问题时,最好是进行子分类。它是许多设计模式的基础,尤其是 策略 模式。 |
![]() |
5
2
委托实例是对方法的引用。它们之所以有用,是因为您可以在类型的特定实例上创建绑定到特定方法的委托。委托实例允许您在特定实例上调用该方法,即使将要调用该方法的对象已离开词法范围。 像这样的委托实例最常用的用法是支持 callbacks 在语言层面。 |
![]() |
6
2
它只是引用一个方法。它们在处理交叉线程时非常有用。 下面是一个我代码中的例子。
如果不使用委托,则无法跨线程调用lobby.adrotator函数。 |
![]() |
7
1
正如其他人所说,委托是对函数的引用。一个更有益的用途(imo)是事件。当您注册一个事件时,您注册了一个用于调用该事件的函数,并且委托非常适合此任务。 |
![]() |
8
1
在最基本的术语中,委托只是包含(对)函数的引用的变量。委托很有用,因为它们允许您将函数作为变量传递,而不必关心函数的实际来源。 当然,需要注意的是,当函数被绑定到变量中时,它不会被复制;它只是被引用绑定。例如:
|
![]() |
9
1
最简单地说,执行一个方法的责任被委托给另一个对象。假设某个国家的总统去世了,美国总统应该带着慰问信出席葬礼。如果美国总统不能去,他将把这个责任委托给副总统或国务卿。 代码也一样。委托是一种类型,它是能够执行该方法的对象。 如。
getPersonName方法是使用委托对象personnameDelegate调用的。 或者,我们可以使用printnameousingdelegate方法将委托作为参数。
这样做的好处是,如果有人想将名称打印为lastname_firstname,他/她只需将该方法包装在personnamedelement中并传递给此函数。无需进一步更改代码。 代表在
|
![]() |
10
0
如果要将任务委派给某人,则该委派将是接收该工作的人。 在编程中,它是对代码块的引用,而代码块实际上知道如何做某事。通常这是指向将处理某些项的函数或方法的指针。 |
![]() |
11
0
用我能想到的最简单的话来说就是:一个委托将把工作的负担强加给一个几乎知道该怎么做的类。把它想象成一个孩子,他不想完全像他哥哥那样长大,但仍然需要他的指导和命令。他没有从哥哥那里继承所有的方法(即子类化),而是让弟弟做这项工作,或者让弟弟做一些需要哥哥采取行动的事情。当你陷入协议的行列时,老大哥会定义什么是绝对需要的,或者他可能会给你灵活性,让你在某些事件中选择你想让他做的事情(如objective-c中概述的非正式和正式协议)。 这个概念的绝对好处是您不需要创建子类。如果你想让某件事顺理成章,那么当一个事件发生时,遵循命令,委托允许一个开发的类握住它的手,并在必要时发出命令。 |