我想更好地瞭解委派。有人可以粘貼一個很好的代碼樣例並解釋它是如何工作的嗎?代表團,代碼的一些例子?如何將對象委託給其他
回答
你的意思是.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