我不確定是否應該創建一個抽象類和一系列繼承此抽象類的子代,或者定義一個協議。 Cocoa的最佳做法是什麼?抽象類或協議,Cocoa推薦的做法是什麼?
4
A
回答
5
這取決於。
抽象類+後代模式在Cocoa術語中稱爲類羣。衆所周知的例子是NSString
和NSArray
。這種方法的主要優點是你可以在基類上實現一些方法,這些方法在一組核心方法上工作並被繼承;例如NSString
的子類只需要實現-length
和-characterAtIndex:
以使所有公開的NSString
實例方法能夠工作(儘管它不會很有效)。
這種模式的缺點是實現必須繼承自基類,這可能是單一繼承語言中的嚴重限制。
另一方面,協議可以被任何類所採用,但不能提供基本的實現。這很像鴨子打字的靜態檢查版本;通過採用您聲稱可以嘎嘎的協議,並且通過要求協議,您可以將參數限制爲支持quack的類而不需要特定的基類。
如果您打算爲您的抽象提供一套標準實現,您可能需要一個類集羣。如果你想與一組實現抽象的開放對象通信,你可能需要一個協議。
2
允許我推薦一本書,名爲可可設計模式這是一本非常好的書,可以查看Cocoa框架是如何工作的以及使用什麼樣的範例。
相關問題
- 1. 你會推薦什麼通信協議?
- 2. GoodData ETL協同開發的推薦做法是什麼?
- 3. 完成抽象類的常見做法是什麼?
- 4. 爲什麼拋出一個EJBException是一個「推薦」的做法?
- 5. 什麼是抽象類型?
- 6. Objective-C/Cocoa文檔中的「採用協議」是什麼意思?
- 7. 什麼是抽象類和抽象方法?
- 8. 爲什麼你需要知道抽象類的抽象方法是否抽象
- 9. 不推薦使用Springfox ClassOrApiAnnotationResourceGrouping類的替代方法是什麼?
- 10. 協作或結構化的推薦?
- 11. 什麼是聯邦協議?
- 12. 什麼是xmlsocket://協議?
- 13. 什麼是USB協議棧?
- 14. 什麼是COP3協議?
- 15. 什麼是Xdata協議?
- 16. 什麼是協議棧?
- 17. 什麼是hm://協議?
- 18. 什麼是SMPP協議?
- 19. 什麼是webcal協議?
- 20. 什麼是RCE協議?
- 21. 建議從抽象類中的方法調用抽象方法
- 22. 推薦iOS iOS初始化的推薦方式是什麼?
- 23. 推薦幫助文件的推薦方式是什麼?
- 24. 什麼是在PHP中的抽象類?
- 25. 爲什麼HttpServletRequestWrapper類不是抽象的
- 26. 是否推薦在Swift中使用協議來打破耦合
- 27. 什麼是推薦的方式做在DMZ
- 28. 爲什麼接口或抽象類有用? (或爲什麼?)
- 29. 抽象方法的目的是什麼?
- 30. 什麼非抽象空洞的方法,抽象類
剛訂購了它。謝謝。 – cfischer 2011-04-04 14:32:17
不客氣。順便說一句,我不以任何方式與本書相關,我只是認爲這是有幫助的。 – GorillaPatch 2011-04-04 16:16:18