**定義**:橋接模式(BridgePattern),將抽象部分與它的實現部分分離,使它們都可以獨立地變化。
類型:結構型模式。
類圖:

參與角色:
1. Clinet,客戶指定組裝電腦,指定了最初的接口。
1. Computer,電腦抽象類,指定了具體安裝CPU的接口。
1. DesktopComputer,具體的臺式機電腦,根據主板型號具體實現如何安裝CPU。
1. CPU,抽象類,指定連接CPU針腳的接口。
1. Pentium,Core,具體的CPU,具體實現如何連續CPU的針腳。
概述:
?????? CPU每年都在更新,尤其是像Pentium和Core這樣兩代產品架構的更新,直接導致整個電腦產業鏈的更新。例如,Pentium和Core架構下的CPU針腳數不一樣,這就要求匹配的主板也必須與CPU吻合。另外核心顯卡也集成到了CPU當中云,這些都會影響到電腦的組裝。
???????為了保證達到開閉原則,盡量不去修改原有代碼,那么針對產品的升級,就必須通過繼承來實現。但是電腦產品的升級會涉及到很多部件。如CPU升級了,就要派生一個新的類了。如果主板升級了,也要派生一個新的類。如果聲卡升級了,也需要派生一個新的類。或者其中兩個部件升級了,也需要派生新的電腦類。隨著變化的部件越來越多,可能會產生非常多非常多的派生類,不便于管理。這個時候就需要用到橋接模式。
??????橋接模式,將每一個維度的變化都獨立出來,并且做成抽象類,通過派生來實現單個維度的升級改變。這樣,在客戶看來,具體的產品組裝接口是沒有變,不影響客戶端的使用。
??????這里的示例,主要是以CPU以及安裝CPU這兩個維度作一下模擬。
代碼示例:
~~~
#include?"stdafx.h"
#include?<iostream>
using?namespace?std;
class?CCPU
{
public:
???virtual?~CCPU(){}
???virtual?void?Connect()?=?0;
};
class?CComputer
{
public:
???CComputer(CCPU*?_pCPU)?:?m_pCPU(_pCPU){}
???virtual?~CComputer(){}
???virtual?void?ConnectCPU()?=?0;
protected:
???CCPU*?m_pCPU;
};
class?CDesttopComputer?:?public?CComputer
{
public:
???CDesttopComputer(CCPU*?_pCPU)?:?CComputer(_pCPU){}
???virtual?void?ConnectCPU()
???{
???????cout<<"正在安裝CPU"<<endl;
???????m_pCPU->Connect();
???}
};
class?CPentiun?:?public?CCPU
{
public:
???virtual?void?Connect()
???{
???????cout<<"正在安裝奔騰CPU"<<endl;
???}
};
class?CCore?:?public?CCPU
{
public:
???virtual?void?Connect()
???{
???????cout<<"正在安裝酷睿CPU"<<endl;
???}
};
int?_tmain(int?argc,?_TCHAR*?argv[])
{
???//?組裝奔騰臺式機
???CCPU*?pCPU?=?new?CPentiun();
???CComputer*?pComputer?=?new?CDesttopComputer(pCPU);
???pComputer->ConnectCPU();
???delete?pCPU;
???delete?pComputer;
???//?組裝酷睿臺式機
???pCPU?=?new?CCore();
???pComputer?=?new?CDesttopComputer(pCPU);
???pComputer->ConnectCPU();
???delete?pCPU;
???delete?pComputer;
???return?0;
}
~~~
**注意:**抽象類的析構函數一定要設定為虛函數,否則在內存釋放的時候可能會有問題.?
優缺點:
1. 優點,將實現與抽象分離,具有更好的可擴展性。并且通過組合的方式可以大大提高代碼的靈活性。
1. 缺點,前期較好的識別出可變的維度有一定的困難。
參考資料:
1. 《設計模式——可復用面向對象軟件基礎》
1. 《Java與模式》
1. 《大話設計模式》
- 前言
- 設計模式六大原則
- 1——創建型模式之簡單工廠模式
- 2——創建型模式之工廠方法模式
- 3——創建型模式之抽象工廠模式
- 4——創建型模式之單例模式
- 5——創建型模式之建造者模式
- 6——創建型模式之原型模式
- 7——結構型模式之適配器模式
- 8——結構型模式之橋接模式
- 9——結構型模式之組合模式
- 10——結構型模式之裝飾者模式
- 11——結構型模式之外觀模式
- 12——結構型模式之享元模式
- 13——結構型模式之代理模式
- 14——行為型模式之職責鏈模式
- 15——行為型模式之命令模式
- 16——行為型模式之解釋器模式
- 17——行為型模式之迭代器模式
- 18——行為型模式之中介者模式
- 19——行為型模式之備忘錄模式
- 20——行為型模式之觀察者模式
- 21——行為型模式之狀態模式
- 22——行為型模式之策略模式
- 23——行為型模式之模板方法模型
- 24——行為型模式之訪問者模式
- 設計模式總結