2011-04-03 32 views

回答

5

這取決於。

抽象類+後代模式在Cocoa術語中稱爲類羣。衆所周知的例子是NSStringNSArray。這種方法的主要優點是你可以在基類上實現一些方法,這些方法在一組核心方法上工作並被繼承;例如NSString的子類只需要實現-length-characterAtIndex:以使所有公開的NSString實例方法能夠工作(儘管它不會很有效)。

這種模式的缺點是實現必須繼承自基類,這可能是單一繼承語言中的嚴重限制。

另一方面,協議可以被任何類所採用,但不能提供基本的實現。這很像鴨子打字的靜態檢查版本;通過採用您聲稱可以嘎嘎的協議,並且通過要求協議,您可以將參數限制爲支持quack的類而不需要特定的基類。

如果您打算爲您的抽象提供一套標準實現,您可能需要一個類集羣。如果你想與一組實現抽象的開放對象通信,你可能需要一個協議。

2

允許我推薦一本書,名爲可可設計模式這是一本非常好的書,可以查看Cocoa框架是如何工作的以及使用什麼樣的範例。

Cocoa Design Patterns on Amazon

+0

剛訂購了它。謝謝。 – cfischer 2011-04-04 14:32:17

+0

不客氣。順便說一句,我不以任何方式與本書相關,我只是認爲這是有幫助的。 – GorillaPatch 2011-04-04 16:16:18