我想更好地了解委派。有人可以粘贴一个很好的代码样例并解释它是如何工作的吗?代表团,代码的一些例子?如何将对象委托给其他
回答
你的意思是.NET或Java或其他语言的代表吗?
有一个在一个很好的例子: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
代表它做一些工作。
.NET中的委托只不过是一个函数指针,或者换句话说就是一个指向可执行代码块的变量。它们可以以各种方式使用。一种方法是在事件背景下使用它们。假设你有一个ASP.NET页面,并且你正在使用MVP(该页面上的Model View 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;
}
这里有一个答案,我写了一行解释:https://stackoverflow.com/questions/1089737#1090170
代表是一种方式来响应事件。在其他语言中,你可能会通过子类来做到这一点。例如,假设你有一个表格视图。你可以对tableview进行子类化并覆盖tableView:didSelectRowAtIndexPath:方法,但是这会变得混乱并且创建一个不必要的子类(以及它不可重用的事实),而是创建一个TableViewDelegate类并告诉你的表视图(tableView 。代表)。这样,当发生什么事情时,该方法将自动被调用。这是一个非常干净的事件处理解决方案。
在您编写涉及委托的几个应用程序(表格视图很重要)之后,您将掌握它。
- 1. 如何将where子句的部分委托给其他区域
- 2. 将财产委托给其他财产
- 3. 将一个对象的事件委托给另一个对象
- 4. 如何将C#类对象传递给C++非托管代码?
- 5. 将PickerView的代表委托给另一个视图
- 6. C++中的委托代码
- 7. Ruby中的委托代码
- 8. 减少代码与通用委托或以其他方式
- 9. 了解委托与区块。 (重构代码使用代表团而不是块)
- 10. 如何将Windows Azure帐户委托给其他Live ID帐户
- 11. UIWebView委托代码看起来不对
- 12. VB.NET委托代码澄清
- 13. 推广委托代码(C#)
- 14. 循环委托代码
- 15. 从其他对象(委托)更改对象变量
- 16. 保留对象并将其释放给委托人
- 17. 你如何做一个委托给.NET 2.0代理的指派
- 18. 将一些C#代码转换为托管或C++/CLI代码
- 19. ansible代表团到其他主机
- 20. 我将如何在一个页面加载一些PHP代码代替其他php代码
- 21. C++/cli将托管代码传递给非托管代码
- 22. 如何将我的python代码分享给其他人?
- 23. 如何将委托对象传递给MVC Views。
- 24. 将对象的构造委托给一个类
- 25. 子类MKMapView,并使其mapview委托,同时仍允许其他代理
- 26. 如何识别委托代码中触发jQuery点击事件的对象
- 27. 用一些其他代码代替SQL Server中的合并
- 28. 代表团:委托方式没有看到网点
- 29. 将代表类型委托给Delegate并调用EndInvoke
- 30. 如何在Google代码或任何其他网站上托管代码
-1:错误的语言。查看标签。 – 2009-09-22 10:17:07
woops,对不起。基于其他答案,即使在可可触摸中,似乎委托仍然基本上是一个可以传递和调用的函数指针。这个概念是相似的,但语言结构是非常不同的。 – 2009-09-22 14:05:49