JDK中提供了操作数据库的接口,比如
java.sql.Driver
java.sql.Connection
java.sql.Statement
java.sql.PreparedStatement
不同的数据库厂商提供操作自己数据库的驱动包,
比如mysql
public class Driver extends NonRegisteringDriver implements java.sql.Driverpublic interface JdbcConnection extends java.sql.Connection, MysqlConnection, TransactionEventHandlerpublic interface JdbcStatement extends java.sql.Statement, Query
比如oracle
public class OracleDriver implements java.sql.Driverpublic interface OracleConnection extends java.sql.Connectionpublic interface OracleStatement extends java.sql.Statement
可以看到,不论是mysql 还是 oracle,都对 JDBC接口进行了实现。
难道是属于策略模式?看一下策略模式类图(图解设计模式),好像是挺像的
不过还有一种模式,叫桥接模式(图解设计模式)
GOF对桥接模式的意图解释:
将抽象部分与它的实现部分分离,使它们都可以独立地变化
GOF对策略模式的意图解释:
定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。本模式使得算法可独
立于使用它的客户而变化
看下下面的图:
所以,可以将JDBC中定义的接口看成是 抽象部分,而mysql 、oracle看成是具体的实现,这种将抽象和实现分开,就是桥接模式的定义啊。所以,不能只关注 实际的接口类或者实现类之间的关系,应该从宏观上来看他们之间的关系,因此,JDBC就是使用了桥接模式。