桥接模式(Bridge):把事物和其具体实现分开(抽象化与实现化解耦),使他们可以各自独立的变化。假设你的电脑是双系统(WinXP、Win7),而且都安装了mysql、oracle、sqlserver、DB2这4种数据库,那么你有2*4种选择去连接数据库。按平常的写法,咱要写2*4个类,但是使用了桥接模式,你只需写2+4个类,可以看出桥接模式其实就是一种将N*M转化成N+M组合的思想。
##一、uml建模:
![](https://box.kancloud.cn/2016-02-19_56c7196eb9582.jpg)
##二、代码实现
~~~
/**
* 桥接模式(Bridge): 把事物和其具体实现分开(抽象化与实现化解耦),使他们可以各自独立的变化。
*
* 假设你的电脑是双系统(WinXP、Win7),而且都安装了mysql、oracle、sqlserver、DB2这4种数据库
*
* 那么你有2*4种选择去连接数据库。按平常的写法,咱要写2*4个类,但是使用了桥接模式,你只需写2+4个类
*
* 可以看出桥接模式其实就是一种将N*M转化成N+M组合的思想。
*/
interface Driver {
public void method();
}
class MysqlDriver implements Driver {
@Override
public void method() {
System.out.println("use mysql driver to connection db...\n");
}
}
class OracleDriver implements Driver {
@Override
public void method() {
System.out.println("use oracle driver to connection db...\n");
}
}
/**
* 这里你还可以写SqlserverDriver、DB2Driver...
*/
abstract class Computer {
public abstract void connection(Driver driver);
}
class WinXP extends Computer {
@Override
public void connection(Driver driver) {
System.out.println("WinXP Computer");
driver.method();
}
}
class Win7 extends Computer {
@Override
public void connection(Driver driver) {
System.out.println("Win7 Computer");
driver.method();
}
}
/**
* 客户端测试类
*
* @author Leo
*/
public class Test {
public static void main(String[] args) {
/**
* 第一种组合:winXP使用mysql驱动连接数据库
*/
Computer winxp = new WinXP();
winxp.connection(new MysqlDriver());
/**
* 第二种组合:win7使用mysql驱动连接数据库
*/
Computer win7 = new Win7();
win7.connection(new MysqlDriver());
/**
* 第三种组合:winXP使用oracle驱动连接数据库
*/
Computer cwinxp = new WinXP();
cwinxp.connection(new OracleDriver());
/**
* 第四种组合:winXP使用oracle驱动连接数据库
*/
Computer cwin7 = new Win7();
cwin7.connection(new OracleDriver());
}
}
~~~
##三、总结
桥接的核心思想是:将抽象化与实现化解耦,使得二者可以独立变化。
- 前言
- (一)策略模式建模与实现
- (二)观察者模式建模与实现
- (三)装饰者模式建模与实现
- (四)工厂方法模式建模与实现
- (五)抽象工厂模式建模与实现
- (六)单例模式建模与实现
- (七)命令模式建模与实现
- (八)适配器模式建模与实现
- (九)外观模式建模与实现
- (十)模板方法模式建模与实现
- (十一)迭代器模式建模与实现
- (十二)组合模式建模与实现
- (十三)状态模式建模与实现
- (十四)代理模式建模与实现
- (十五)建造者模式建模与实现
- (十六)原型模式建模与实现
- (十七)桥接模式建模与实现
- (十八)责任链模式建模与实现
- (十九)备忘录模式建模与实现
- (二十)解释器模式建模与实现
- (二十一)享元模式建模与实现
- (二十二)中介者模式建模与实现
- (二十三)访问者模式建模与实现
- Java设计模式博客全目录