2012-07-16 48 views
5

我有一個非常簡單的應用程序,它需要一個數據源。目前它是一個平面文件,但稍後它會更改爲數據庫。我需要您在這裏使用繼承或接口的意見。哪一個會更好,爲什麼?我的意見是使用接口,因爲它會很靈活,但是我也可以將數據源作爲一個抽象類。在Java中使用繼承或接口的情況?

回答

8

您將使用抽象類,其中有所有實現都需要訪問的通用功能。在這裏,數據庫和文件的實現是如此不同,它們沒有任何共同之處,所以我會使用接口。

+0

但它仍然是有意義的創建數據源作爲接口,然後讓FileDataSource實現它? – Phoenix 2012-07-16 16:59:09

+0

@Phoenix:我不明白你在問什麼。如果你有一個接口,當然必須實現它。 – 2012-07-16 17:08:19

2

當只有訪問數據的方法和類型保持不變時,才使用接口。當需要共享的東西之間會有共同的代碼/功能時,您可以使用繼承。

在這種情況下,看起來一個接口就足夠了,利用一個沒有公共代碼的抽象類將是一種浪費。一個經常被遺忘的使用接口的好處是你可以一次實現多個接口,而你只能從一個父類繼承。

0

在這種情況下,使用接口會更方便。

通過抽象出實現細節,您可以提供平面文件和數據庫支持都可以使用的通用接口。當需要改變時,只有實現這個接口的代碼會改變,而不是使用它們的任何代碼。

0

我會去抽象類。學習純面向對象的方法時,類將會非常小,只有必需品,然後讓子類包含對象的所有參數和值。

抽象類中爲了讓你準備好用於你計劃的數據庫的例子是一個int的唯一ID。

0

正如你在文章中提到的那樣,最好創建一個接口來定義可以在你的數據源上完成的操作。對於每個單一數據源,您可以創建一個實現該接口的類。

要在平面文件上操作,您可以實現類FileDataWrapper implements DataWrapper,其中類FileDataWrapper實現可以在數據源上執行的操作。稍後,當您更改爲數據庫時,只需實現類DatabaseDataWrapper implements DataWrapper