5

我有一个非常简单的应用程序,它需要一个数据源。目前它是一个平面文件,但稍后它将更改为数据库。我需要您对这里使用继承或接口的意见。哪一个会更好,为什么?我的意见是使用接口,因为它很灵活,但我也可以将数据源作为抽象类。

4

6 回答 6

8

您将使用一个抽象类,其中存在所有实现都需要访问的通用功能。这里的数据库和文件实现是如此不同,它们没有任何共同点,所以我会选择接口。

于 2012-07-16T16:41:49.783 回答
2

当只有访问数据的方法和类型保持不变时,您可以使用接口。当需要共享的事物之间存在共同的代码/功能时,您可以使用继承。

在这种情况下,似乎一个接口就足够了,而使用没有公共代码的抽象类将是一种浪费。使用接口的一个经常被遗忘的好处是您可以一次实现多个接口,而您只能从一个父类继承。

于 2012-07-16T16:43:05.373 回答
0

在这种情况下,使用接口会更方便。

通过抽象出实现细节,您可以提供平面文件和数据库支持的通用接口。当需要更改时,只有实现此接口的代码会更改,而不会更改任何使用它们的代码。

于 2012-07-16T16:44:05.793 回答
0

我会选择一个抽象类。采用纯面向对象的方法,该类将非常小,只有必需品,然后让子类包含对象的所有参数和值。

为您计划的数据库做好准备的抽象类中的一个示例是int唯一 id。

于 2012-07-16T16:45:05.917 回答
0

您可以使用 DAO 设计模式和工厂。您可以在高级 DAO 编程中找到示例,在核心 J2EE 模式 - 数据访问对象中找到更多信息。

于 2012-07-16T16:55:21.480 回答
0

正如您在帖子中提到的,最好创建一个接口来定义可以在您的数据源上执行的操作。对于每个单个数据源,您可以创建一个实现该接口的类。

要对平面文件进行操作,您可以实现 class FileDataWrapper implements DataWrapper,其中 FileDataWrapper 类实现可以对数据源执行的操作。稍后,当您更改为数据库时,只需实现类DatabaseDataWrapper implements DataWrapper

于 2012-07-16T16:45:39.837 回答