jdbc 连接中使用了哪种设计模式?

Which design pattern is used in jdbc connection?

连接conn = DriverManager.getConnection(URL); 语句 stmt = conn.createStatement(); 结果集 rs = stmt.executeQuery(sql);

这里使用的是哪种设计模式?我们看到每个对象返回一个不同的对象。

所选设计模式的替代方案有哪些?

显然不是每个代码都遵循设计模式。但是那里仍然有一些类似于一些熟悉模式的东西。

整个JDBC架构实际上是一个Bridge,它是一个抽象概念,包含其他可以单独替换的抽象。

下面的 类 实现了一些模式。

DriverManager.getConnection(URL) 对我来说似乎是 static factory method,这在 Java 框架中很常见。

Statement 和 Connection 实际上遵循相同的模式,它在实现 JDBC Wrapper 接口时是某种 Unit of Work or Transaction pattern since it allows you to bulk statements together. But it also follows a Proxy 模式。

ResultSet 遵循 Iterator pattern but it is also a Data mapper

对检查的答案进行更正:

ResultSet 不是 data mapper, from whose link we can easily figure out that the concept data mapper was coined in the context of enterprise application architecture in 2003. Whereas the ResultSet already existed in the late 1990s. One can search for the keyword "since", by means of which one can infer that the earliest version when new features were added is since 1.2(in 1998. Refer to Java version history),这意味着大多数旧功能,例如那些 getters 已经在这个中class 1998 年之前

Class JDK 1.1.8 的列表是 here,其中已经有 ResultSet

此外,从DriverManagerConnectionDriver的角度来看,JDBC不仅是应用静态工厂方法但更准确地说服务提供商框架的标准应用,一种设计模式第1条:考虑用静态工厂方法代替书中的构造函数Effective Java:

  • Connection服务接口
  • DriverManager.registerDriver供应商注册API
  • DriverManager.getConnection服务权限API
  • java.sql.Driver服务提供商接口