【问题标题】:Who/What implements Interfaces that I can use directly?谁/什么实现了我可以直接使用的接口?
【发布时间】:2009-02-15 13:39:12
【问题描述】:

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

这是否意味着某些对我隐藏的类正在实现这些接口,并在我需要时提供它们的引用?这是因为它们需要根据我使用的驱动程序以不同的方式实现吗?

【问题讨论】:

    标签: java interface


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      在 JDBC 驱动程序的特定情况下,您是正确的。各个驱动程序 jar 包含必要接口的实现。

      在其他情况下,例如 Calendar 的一个著名示例,您可以查看文档以了解 已知 子接口和直接实现。当然,Sun 的文档只会列出核心 Java 库中存在的子接口和子类。您可以在 3rd 方库(例如 Apache Commons)或您自己的代码中找到许多其他实现。

      【讨论】:

        【解决方案3】:

        这是因为它们需要根据我使用的驱动程序以不同的方式实现吗?

        例如。出于多种原因,将代码编写到接口而不是实现(= 类,在这种情况下)是一般的最佳实践。您已经提到了其中之一:相关但不同的实现可以共享一个通用接口。另一点是,可以在后台更改一个特定的实现,而无需更改接口:假设驱动程序的下一个实现需要使用另一个类。实现现有接口就够了。

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

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            猜你喜欢
            • 2015-09-10
            • 2015-02-23
            • 1970-01-01
            • 2020-06-07
            • 1970-01-01
            • 2018-10-24
            • 1970-01-01
            • 2015-01-15
            • 1970-01-01
            相关资源
            最近更新 更多