2010-07-21 85 views

回答

16
+0

+1,不能得到更簡潔:) – 2010-07-21 20:41:45

+3

委託也可能包含對對象的引用,所以你可以指向一個特定類的實例中的函數/方法。一個函數指針本身並不允許:) – dtb 2010-07-21 20:52:43

+1

在拋出這個答案之前,只要確定你知道什麼類型安全的方法和函數指針。 – 2010-07-21 20:56:44

1

我能想到的最好的比喻來自C術語,它是「指向函數」。

這個想法是,你需要能夠調用一段代碼,但你要調用的那段代碼直到運行時才知道。所以你使用「委託」來達到這個目的。

10

A型保險箱function pointer

+0

+1,因爲在同一時刻有與精靈一樣的默認回答。 – Abel 2010-07-21 20:49:47

+0

你的答案缺少chibacity的連字符 - 但我喜歡你的超鏈接; +1給你們兩個 – STW 2010-07-21 20:50:58

+0

+1只是給你,因爲你應該等於chibacity – 2010-07-21 21:04:43

6

委託包裝的方法成型安全對象引用一個啤酒開瓶器包裝在可反覆使用爲不同種類的啤酒瓶的一個方便的工具(beer opener)的方法(opening beer)的方式。

有爲啤酒開瓶器定義的輸入,certain type of bottle和力量(你的手)。它擁有形式始終相同的行動的關鍵。同樣,爲委託定義了輸入,該輸入將密鑰(契約)保存到具有特定輸入(表單)的操作(顯示錶單)中。

注:這是不是99瓶啤酒;)

注(2):你可以open a beer without a beer opener,你可以使用的方法(甚至是其參考)沒有代理以同樣的方式。這只是混亂和不太清楚,但它可以是更多的樂趣,雖然。

+0

好吧,我沒有看到那個人來... – fletcher 2010-07-21 20:53:30

+0

當涉及到類比時,總會有與啤酒的聯繫:) – Abel 2010-07-21 20:54:39

1

委託是引用方法的類型。

1

一個代表就像一個實習生,就像你在說「嘿,我需要一個實習生給我來一杯咖啡。」

幸運的是,你會得到一個能夠執行「給我一杯咖啡」的人。不同的實習生可能會以不同的方式執行該任務,例如,可能會用完星巴克。另一個人可能會跑來跑去,直到她在大樓的某個地方找到一個非空的咖啡壺,然後給你倒杯。

10

更妙的是使用類比

委託是喜歡暴力。如果他們還沒有解決你的問題,那麼你沒有足夠的使用。好吧,這個玩笑是not original,所以告你。

認真地現在。代表們就像......代表。由此得名。什麼是現實生活中的代表? 代表是代表另一位代表行事的人。你代表代表工作給他們,他們執行這項工作。你想交易XYZ公司的50股股票,你不要到交易大廳去親自動手,而是將這項工作委託給你的經紀人爲你做;他們如何做到這一點,只要完成就不在乎。經紀人是你的代表;他們代表你完成工作。

委託是代表按需執行工作的對象。你創建一個能完成特定工作的代表,當你想完成這項工作時,你要求你的代表爲你去做。