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数据库连接