橋接模式(Bridge):把事物和其具體實現分開(抽象化與實現化解耦),使他們可以各自獨立的變化。假設你的電腦是雙系統(WinXP、Win7),而且都安裝了mysql、oracle、sqlserver、DB2這4種數據庫,那么你有2*4種選擇去連接數據庫。按平常的寫法,咱要寫2*4個類,但是使用了橋接模式,你只需寫2+4個類,可以看出橋接模式其實就是一種將N*M轉化成N+M組合的思想。
##一、uml建模:

##二、代碼實現
~~~
/**
* 橋接模式(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設計模式博客全目錄