java设计模式之桥梁模式(10)
又叫桥连模式。
桥梁模式是对象的结构模式,桥梁模式的用意是:将抽象化与实现化脱耦,使得二者可以独立地变化。
接口就是抽象化,实现类就是实现化,把接口和实现类分开就是脱耦。说起来看似很简单,最重要的是它体现的
面向对象的思想。
java中的JDBC是最典型的桥梁模式。曾记得刚学JDBC的时候,老师总是告诉我说“我们使用JDBC桥连的方式连接数据库”
当时我实在不理解“JDBC桥连”,为什么是这个名字。后来接触到设计模式的时候才恍然大悟,软来JDBC是使用桥连模式
所以就叫了JDBC桥连。哈....
先来熟悉一下使用JDBC的代码:
Class.forName("com.mysql....");//或者DriverManager.registerDriver(new Driver());
DriverManager.getConnection(url,user,password);
DriverManager根据具体实现来获取数据库连接。
JDK编写人员在编写DriverManager的代码的时候并不关心客户端会注册一个什么数据库驱动,也就是
不关心具体的实现。只在DriverManager中保留数据库驱动的抽象表示。客户端根据需要注册所需要
的数据库驱动。
我们简单的模拟一下JDBC桥连:
package com.pattern.struct.bridge;
public interface Driver {
public void getConnection();
}
package com.pattern.struct.bridge;
public class MysqlDriver implements Driver{
@Override
public void getConnection() {
System.out.println("mysql 数据库连接");
}
}
package com.pattern.struct.bridge;
public class OracleDriver implements Driver {
@Override
public void getConnection() {
System.out.println("oracle数据库连接");
}
}
package com.pattern.struct.bridge;
public abstract class Manager {
private Driver driver;
public void getConnection(){
driver.getConnection();
}
public void setDriver(Driver driver) {
this.driver = driver;
}
}
package com.pattern.struct.bridge;
public class DriverManager extends Manager {
public DriverManager(Driver driver){
setDriver(driver);
}
public void getConnection() {
super.getConnection();
}
}
package com.pattern.struct.bridge;
public class Client {
/**
* @param args
*/
public static void main(String[] args) {
DriverManager manager = new DriverManager(new MysqlDriver());
manager.getConnection();
manager = new DriverManager(new OracleDriver());
manager.getConnection();
}
}
mysql 数据库连接
oracle数据库连接