为什么JDBC是Bridge设计模式的典型示例?

时间:2017-09-14 21:21:01

标签: design-patterns jdbc bridge

我从大量资源中发现JDBC是Bridge设计模式的典型示例。但他们通常没有详细说明,所以我想知道细节。根据我的理解:

  • Driver接口是DriverManager和具体JDBC驱动程序类之间的网桥
  • Connection接口是Driver和具体JDBC连接类之间的网桥
  • Statement接口是Connection和具体SQL语句类之间的网桥
  • ResultSet接口是Statement和概念结果集类之间的网桥

如果我的陈述错误,请修改。另外我猜DataSource接口也是网桥,但我无法弄清楚那是哪个类之间的网桥

2 个答案:

答案 0 :(得分:2)

由“四人帮”定义的Bridge pattern意味着将抽象与其实现分离,以便两者可以独立变化。在这种情况下,并不是将不同的课程联系在一起。相反,该模式说明了接口(JDBC API)保持不变的Open/Closed principle,但可以添加新的实现(JDBC驱动程序)并相互替换。

这意味着使用JDBC的数据访问代码只需依赖于ConnectionStatementResultSet等API接口,而不是关心实际的数据库系统应用程序连接到。 JDBC将应用程序桥接到应用程序部署到的环境中使用的数据库。因此,您可以针对不同的RDBMS运行相同的代码(使用JDBC抽象),并且只需要更改JDBC驱动程序(实现)。

由RUI添加:http://www.informit.com/articles/article.aspx?p=29302

答案 1 :(得分:1)

不是。

Bridge模式需要一个API的具体实现,该API映射到另一个API的具体实现。它很少使用:事实上,自从GoF书籍出现以来,我已经在20多年内使用了它一次,我后悔了。

JDBC提供API(接口)的抽象定义,这些定义由相同 API的具体实现实现,然后进行网络操作,而不是调用不同的API。

但是,Type 2 JDBC驱动程序内部将是Bridge模式的示例。在这个体系结构中,Java层与JNI层对话,该层与供应商可能已经存在并提供的不同C API进行通信。这种架构是过渡性的,我怀疑你现在会找到一个例子。