我希望对代表团有更好的了解。有人可以粘贴一个好的代码示例代码并解释它是如何工作的吗?
答案 0 :(得分:1)
有一个很好的例子:http://en.wikipedia.org/wiki/Delegation_pattern#Objective-C_example
在此示例中,MyCoolAppController
创建了TCScrollView
类型的对象,并将TCScrollView
的“委托”属性设置为self
。这意味着当TCScrollView调用
[delegate scrollView:self shouldScrollToPoint:to]
它要求MyCoolAppController
(TCScrollView的委托)执行一些计算并查看是否可以滚动。您可以说“MyCoolAppController
是TCScrollView
的代表”来描述这一点; TCScrollView
要求MyCoolAppController
代表其做一些工作。
答案 1 :(得分:0)
您的意思是.NET或Java还是其他语言委托?
答案 2 :(得分:0)
.NET术语中的委托只不过是一个函数指针,换句话说是一个指向可执行代码块的变量。它们可以以各种方式使用。一种方法是在事件的上下文中使用它们。假设您有一个ASP.NET页面,并且您正在使用MVP(该页面上的模型视图Presenter模式)。您希望您的演示者收到有关视图上保存按钮的单击事件的通知。您可以在视图界面上定义事件,但是为了订阅该事件并对其执行操作,您需要注册在引发事件时触发的方法。例如:
public class ClassThatRegistersForEvent
{
public void InitializeView(IView view)
{
view.SaveButtonClickedEvent += delegate{
// do stuff in here when the event is raised
}
}
}
public interface IView
{
event System.EventHandler SaveButtonClickedEvent;
}
答案 3 :(得分:0)
这是我写的解释代表团的答案:https://stackoverflow.com/questions/1089737#1090170
答案 4 :(得分:0)
委托是一种回应事件的方式。在其他语言中,您可能会通过子类化来完成此操作。例如,假设您有一个表格视图。您可以继承tableview并覆盖tableView:didSelectRowAtIndexPath:方法,但这会变得混乱并创建一个不必要的子类(以及它不可重用的事实)相反,您创建一个TableViewDelegate类并告诉您的表视图(tableView 。代表)。这样,当事情发生时,该方法将自动被调用。这是一个非常干净的事件处理解决方案。
在您编写了一些涉及代表的应用程序(表格视图很重要)之后,您就可以了解它。