1
eclipse中新建项目bridgeInterface和bridgeMysql
2
在bridgeInterface添加接口
package com.pattern.structure.bridge; public interface Driver { Connection connect(String url); int getMajorVersion(); int getMinorVersion(); }
3
在bridgeInterface添加类
package com.pattern.structure.bridge;
public abstract class Connection { public abstract void insert(String sql);}
4
在bridgeInterface添加类
package com.pattern.structure.bridge;
public class DriverManager { private static Driver drivers; public static void registerDriver(Driver driver){ drivers=driver; } public static Connection getConnection(String url){ return drivers.connect(url); }}
5
项目bridgeMysql引用bridgeInterface
6
在bridgeMysql添加类
import com.pattern.structure.bridge.Connection;
public class MyConnection extends Connection{ public MyConnection(String url){ System.out.println("创建一个数据库连接:"+url); } @Override public void insert(String sql) { System.out.println("执行数据库插入动作:"+sql); }}
7
在bridgeMysql添加类
public class MyDriver implements Driver{ static{ DriverManager.registerDriver(new MyDriver()); } private Connection connection; @Override public Connection connect(String url) { connection=new MyConnection(url); return connection; } @Override public int getMajorVersion() { return 0; } @Override public int getMinorVersion() { return 0; }}
8
将项目bridgeMysql导出jar包,导出时过滤bridgeInterface的引用,把导出的jar引用到bridgeInterface项目下面。
9
在bridgeInterface添加类
package com.pattern.structure.bridge;
public class Main {
public static void main(String[] args) throws ClassNotFoundException { Class.forName("com.pattern.structure.bridge.my.MyDriver"); DriverManager.getConnection("jdbc://10.0.0.1:2222/sss").insert("INSERT INTO TABLE VALUES('a',1)"); }}
10
执行得到结果:
创建一个数据库连接:jdbc://10.0.0.1:2222/sss执行数据库插入动作:INSERT INTO TABLE VALUES('a',1)
END