我想弄清楚爲什麼我應該學習代表和協議的這些事情的原因。首先,我認爲有必要爲了創建漂亮的代碼設計。然後我開始閱讀,但我無法真正找到我雖然我會找到的原因(也就是說,「好」的原因......)。應用委託和協議
我應該何時應用代表和協議?實際的現實生活,或者只是一般的好的例子將是有用的(我知道協議和代表的特徵,至少在某種程度上,所以不需要解釋)。
在此先感謝!
我想弄清楚爲什麼我應該學習代表和協議的這些事情的原因。首先,我認爲有必要爲了創建漂亮的代碼設計。然後我開始閱讀,但我無法真正找到我雖然我會找到的原因(也就是說,「好」的原因......)。應用委託和協議
我應該何時應用代表和協議?實際的現實生活,或者只是一般的好的例子將是有用的(我知道協議和代表的特徵,至少在某種程度上,所以不需要解釋)。
在此先感謝!
協議的用法是爲委託人指定接口。
委託用於實現其他語言名稱回調。
一些最好的例子可以在Cocoa框架中找到。
NSTableView
委託是一個很好的例子。該委託允許視圖高度自定義,而不需要對其進行子類化,但委託所提供的所有定製都是可選的。如果這種定製是通過子類實現的,那麼視圖就必須意識到模型的細節,這會破壞MVC模式。
蘋果文檔是一個良好的閱讀:Cocoa Design Patterns: Delegation
我近來看到另一個很好的資源是通過iTunesU(http://itunes.stanford.edu/)提供的斯坦福大學iPhone應用程序開發過程是免費的。在第7講中,他們討論了編寫視圖控制器的一些最佳實踐,並介紹了委託和協議的概念。
當一個班級需要告訴另一個班級發生某些事情時,他們很棒,應該做些什麼。
它們有助於節省子類化時間,同時還允許定製其他類。
但是,通過創建與其他對象關聯的屬性可以輕鬆實現,不是嗎?與此相比,有什麼好處? – Nicsoft 2010-03-11 16:26:16
確實,另一個類可以訪問屬性的值,但是沒有辦法讓屬性通知另一個類其值已更改或發生了其他某個事件。 – blindjesse 2010-03-11 16:29:51
你可以舉一些很好的例子嗎? – Nicsoft 2010-03-14 15:19:54