我有一個非常簡單的應用程序,它需要一個數據源。目前它是一個平面文件,但稍後它會更改爲數據庫。我需要您在這裏使用繼承或接口的意見。哪一個會更好,爲什麼?我的意見是使用接口,因爲它會很靈活,但是我也可以將數據源作爲一個抽象類。在Java中使用繼承或接口的情況?
5
A
回答
8
您將使用抽象類,其中有所有實現都需要訪問的通用功能。在這裏,數據庫和文件的實現是如此不同,它們沒有任何共同之處,所以我會使用接口。
2
當只有訪問數據的方法和類型保持不變時,才使用接口。當需要共享的東西之間會有共同的代碼/功能時,您可以使用繼承。
在這種情況下,看起來一個接口就足夠了,利用一個沒有公共代碼的抽象類將是一種浪費。一個經常被遺忘的使用接口的好處是你可以一次實現多個接口,而你只能從一個父類繼承。
0
在這種情況下,使用接口會更方便。
通過抽象出實現細節,您可以提供平面文件和數據庫支持都可以使用的通用接口。當需要改變時,只有實現這個接口的代碼會改變,而不是使用它們的任何代碼。
0
我會去抽象類。學習純面向對象的方法時,類將會非常小,只有必需品,然後讓子類包含對象的所有參數和值。
抽象類中爲了讓你準備好用於你計劃的數據庫的例子是一個int
的唯一ID。
0
正如你在文章中提到的那樣,最好創建一個接口來定義可以在你的數據源上完成的操作。對於每個單一數據源,您可以創建一個實現該接口的類。
要在平面文件上操作,您可以實現類FileDataWrapper implements DataWrapper
,其中類FileDataWrapper實現可以在數據源上執行的操作。稍後,當您更改爲數據庫時,只需實現類DatabaseDataWrapper implements DataWrapper
。
0
您可以使用DAO設計模式和Factory。您可以在Advanced DAO programming和Core J2EE Patterns - Data Access Object中找到更多信息。
相關問題
- 1. Java接口和繼承
- 2. 接口和繼承java
- 3. 在這種情況下可以使用繼承嗎? (Java)
- 4. Java集合接口中的繼承
- 5. Rails繼承資源使用情況
- 6. 如何在接口中使用java實現多繼承?
- 7. C中的接口繼承#
- 8. 在JOIN中繼承使用UNION的情況下 - MySQL
- 9. Java繼承接口的過載方法
- 10. EF4:使用接口的Compex繼承
- 11. ninject繼承接口
- 12. C#接口繼承
- 13. C#繼承/接口
- 14. F#繼承接口
- 15. 繼承自通用接口
- 16. oop:在具體情況下的構成或繼承
- 17. 從接口或基地繼承評論
- 18. IComparable <T>繼承或接口?
- 19. Java繼承和理解接口類
- 20. Java對象,繼承和接口
- 21. 繼承,polymorfism,接口,Java編碼excercises
- 22. Java ORM:多個(接口)繼承
- 23. 在不繼承父標記的情況下使用CSS ::
- 24. Java-在繼承中,可以在不創建類的情況下調用方法
- 25. Groovy無法實現使用繼承和泛型的Java接口
- 26. 在Java中的接口實現的繼承
- 27. 接口的多繼承
- 28. 接口的多重繼承
- 29. 這是繼承的情況嗎?
- 30. 使用Java繼承
但它仍然是有意義的創建數據源作爲接口,然後讓FileDataSource實現它? – Phoenix 2012-07-16 16:59:09
@Phoenix:我不明白你在問什麼。如果你有一個接口,當然必須實現它。 – 2012-07-16 17:08:19