2009-02-15 74 views
2

我在学习JDBC时遇到了几个接口 - 连接,语句,结果集等...


这是否意味着某些隐藏在我身边的类正在实现这些接口,并在需要时提供它们的引用?这是因为他们需要根据我使用的驱动程序而有所不同吗?谁/什么实现我可以直接使用的接口?

回答

0

这是因为他们需要根据我使用的驱动程序而有所不同吗?

例如,由于多种原因,将代码编写为接口而不是实现(=在此上下文中)是一般的最佳实践。其中之一已被你提到:相关但不同的实现可以共享一个通用接口。另一点是,一个特定的实现可以在幕后改变,而不需要改变接口:假设下一个驱动程序的实现需要使用另一个类。足以实现现有的接口。

现在想象一下,代替接口,代码处理类类型。现在,如果实现改变了,这些接口也需要改变。这意味着API的每个用户(包括您)都必须更改他们的代码!

2

是的,你是对的。这些接口的实现可以在数据库JDBC驱动程序中找到。

0

正如Johannes所说,实际的DB驱动程序实现了这些类。关键是你可以切换驱动程序,而不必对代码进行任何修改。

1

在JDBC驱动程序的特定情况下,您是正确的。单独的驱动程序罐持有必要接口的实现。

在其他情况下,例如Calendar对于一个众所周知的示例,您可以检查文档已知的子接口和直接实现。当然,Sun的文档只会列出核心Java库中存在的子接口和子类。您可能会在第三方库中找到许多其他实现,例如Apache Commons,或者在您自己的代码中。

相关问题