gpt4 book ai didi

Java对象=方法?示例包括

转载 作者:行者123 更新时间:2023-11-30 08:59:24 24 4
gpt4 key购买 nike

我今天遇到了一些新东西,但似乎无法理解它。请记住以下问题适用于 Java——主要是 Java JDBC。

我有以下代码:

Connection con = DriverManager.getConnection(Url, "username", "password");

还有这个:

Statement myStmt = con.createStatement();
ResultSet myRs = myStmt.executeQuery("select * from employees");

这里到底发生了什么?我了解到该方法会返回一个对象,例如新的 Connection 对象?

还有,Connection不是接口(interface)吗?那么它将如何创建一个新对象?

最佳答案

代码:

Connection con = DriverManager.getConnection(Url, "username", "password");

这是一个 Factory Pattern .管理器根据传入的 URL 创建适当的具体 Connection 类。

Connection 本身是所有具体连接类实现的接口(interface) ( javadoc )。 MySQL、Postgres、Oracle 等等……它们都是连接类。 DriverManager 从其中选择正确的一个并创建它。

DriverManager 是怎么知道的?驱动程序类 register themselves当它们被类加载器加载时与驱动程序一起使用。当驱动程序询问“谁响应此 URL”时,它会调用 acceptsURL每个驱动程序中的方法和响应的方法在使用 connect 调用时返回连接.

一旦您从 Driver 获得了一个 Connection 对象(它知道如何与驱动程序使用的数据库对话),它就可以创建语句或执行针对返回结果集的数据库的查询。

这些细节由驱动程序来实现。您刚刚获得了这些工作方式的接口(interface)。从您的角度来看,所有 ResultSets、Statements 和 Connections(以及 Drivers)的工作方式都相同,尽管它们在幕后连接到游标和数据库的方式可能不同。但这没关系。您有一个界面,它们都以相同的方式工作。

这些都是工厂模式的实例。 Factory, Abstract Factory and Factory Method可能是对此事的有用阅读。描述了其他模式 Examples of GoF Design Patterns in Java's core libraries .您还可以找到 This lecture on Factory Pattern有用(它有经典的“披萨”示例)。

因为这些是模式(我故意用大写的“P”来写),你会发现这些解决方案在整个程序中以类似的方式一次又一次地使用。一旦您认识到您正在与工厂打交道,您将可能更有效地使用它。

关于Java对象=方法?示例包括,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27304059/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com