JDBC使用了哪种设计模式

JDK中提供了操作数据库的接口,比如

java.sql.Driver

java.sql.Connection

java.sql.Statement

java.sql.PreparedStatement

不同的数据库厂商提供操作自己数据库的驱动包,

比如mysql 

public class Driver extends NonRegisteringDriver implements java.sql.Driver
public interface JdbcConnection extends java.sql.Connection, MysqlConnection, TransactionEventHandler 
public interface JdbcStatement extends java.sql.Statement, Query

比如oracle

public class OracleDriver implements java.sql.Driver
public interface OracleConnection extends java.sql.Connection
public interface OracleStatement extends java.sql.Statement

可以看到,不论是mysql 还是 oracle,都对 JDBC接口进行了实现。

难道是属于策略模式?看一下策略模式类图(图解设计模式),好像是挺像的

JDBC使用了哪种设计模式_第1张图片

不过还有一种模式,叫桥接模式(图解设计模式)

JDBC使用了哪种设计模式_第2张图片 

GOF对桥接模式的意图解释:

将抽象部分与它的实现部分分离,使它们都可以独立地变化 

GOF对策略模式的意图解释:

定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。本模式使得算法可独
立于使用它的客户而变化

看下下面的图:

JDBC使用了哪种设计模式_第3张图片 

所以,可以将JDBC中定义的接口看成是 抽象部分,而mysql 、oracle看成是具体的实现,这种将抽象和实现分开,就是桥接模式的定义啊。所以,不能只关注 实际的接口类或者实现类之间的关系,应该从宏观上来看他们之间的关系,因此,JDBC就是使用了桥接模式。

 

 

 

你可能感兴趣的:(JDK,笔记,设计模式)