例如:腳本對象(如字符串,數組)或腳本引擎(eval(),readFile()等)之間的兼容層。我應該在編寫抽象(兼容性)層時使用:函子,接口還是抽象方法? (D語言)
1
A
回答
3
沒有更多的上下文,我不得不說接口。考慮你可以使用單一方法將函數或委託表示爲接口,並且抽象類只是可能已經實現的一些方法的接口。
這就是說,這取決於你想要完成什麼。接口適用於有很多對象具有通用接口但實現可能不同的情況。例如,如果您是爲插件設計一個非常簡單的回調系統(即:讓插件在主機應用程序中掛鉤某些事件),那麼代表可能更簡單並且足以滿足您的需求。
另外請記住,如果確實需要使用接口,那麼您可能需要某種方式讓主機實例化實例。最簡單的方法是使用某個唯一的名稱向主持人註冊一個委託。
抽象類僅在您想使用接口並提供某些事物的默認實現時纔有用。在這種情況下更好的解決方案是改爲具有實際接口,並將默認實現提供爲mixin。
+0
我同意。我會去接口。 – zaphnat 2009-04-26 02:31:52
0
接口有我的投票。這樣,只要您定義了接口,任何開發人員都可以相當容易地編寫兼容的東西,而無需爲他們分發太多的代碼。
相關問題
- 1. 我應該在抽象類實現接口時創建抽象方法嗎?
- 2. 接口中的方法命名應該具體還是抽象?
- 3. 在drupal中我應該使用內容類型還是數據庫抽象層?
- 4. 抽象方法重寫抽象方法
- 5. Websockets抽象/兼容性
- 6. 抽象方法vs接口
- 7. 我應該創建靜態方法還是抽象超類
- 8. 抽象類是否應該至少有一個抽象方法?
- 9. 我應該使用抽象類還是使用類?
- 10. 我將如何編寫抽象方法?
- 11. 子類特定的代碼 - 我應該使用抽象基類方法還是接口?
- 12. XML是抽象語法的語言嗎?
- 13. 在抽象方法中使用non-cls兼容類型
- 14. 在Java中,何時應該在接口中使用抽象方法?
- 15. Midlet不是抽象的,也不重寫抽象方法focusLost(com.sun.lwuit.Component)
- 16. CircleObject不是抽象並且在圖不重寫抽象方法
- 17. 抽象方法vs接口方法
- 18. 抽象接口
- 19. 是不是抽象的,不重寫抽象方法行爲
- 20. 在抽象類中使用抽象類時如何實現抽象方法
- 21. 使用抽象和接口
- 22. 重寫抽象方法時,我再次設置抽象是否正確?
- 23. 應該避免使用GWT/WebSharper還是其他抽象來編寫Javascript?
- 24. 不是抽象的,不重寫抽象方法適用(對象)的功能
- 25. 我應該使用什麼接口或抽象類?
- 26. C++:用抽象方法創建抽象類並重寫子類中的方法
- 27. 在抽象類中使用非抽象方法和構造函數
- 28. 爲什麼我可以抽象重寫一個抽象方法?
- 29. implem不是抽象和在延伸的接口不覆蓋抽象方法FinalScore()
- 30. 不是抽象的,不重寫抽象方法錯誤
對於它的價值,函數在D中沒有意義 - 代表完成相同的角色。 – FeepingCreature 2009-04-26 10:09:14