橋接模式不是將兩個(gè)不相干的類鏈接,而是將一個(gè)需要多維度變化的類拆分成抽象部分和實(shí)現(xiàn)部分,并且在抽象層對(duì)兩者做組合關(guān)聯(lián),是用組合的方式來解決繼承的問題。
舉個(gè)例子,如果一個(gè)類在兩個(gè)維度分別有m和n種變化,采用繼承的方式就需要擴(kuò)展出m*n個(gè)子類,且一個(gè)維度每增加一種變化就多出另一個(gè)維度變化總數(shù)的子類;如果將兩個(gè)維度拆分再組合,加起來也只有m+n個(gè)子類,且每個(gè)維度獨(dú)立擴(kuò)展,一個(gè)維度增加一種變化只需要增加1個(gè)子類
將倆個(gè)維度分離,使他們可以獨(dú)立變化。又稱為柄體(Handle and Body)模式或者接口(interface)模式。
結(jié)構(gòu)圖
角色與理解
- 橋接模式包含如下角色:
- Abstraction (抽象類):用于定義抽象類的接口,一般為抽象類而不是接口,其中維持一個(gè)Implementor的引用
- RefinedAbstraction (擴(kuò)充抽象類):繼承或者實(shí)現(xiàn)抽象類,通常情況下為具體類而不是抽象類,實(shí)現(xiàn)抽象類中定義的抽象業(yè)務(wù)方法,在具體業(yè)務(wù)方法中可以調(diào)用Implementor中定義的業(yè)務(wù)方法
- Implementor (實(shí)現(xiàn)類接口):定義實(shí)現(xiàn)類的接口,一般而言,Implementor接口僅提供基本操作,并交由子類去實(shí)現(xiàn)
- ConcreteImplementor (具體實(shí)現(xiàn)類):實(shí)現(xiàn)Implementor中定義的基本操作方法
- 抽象類持有實(shí)現(xiàn)類接口的對(duì)象,調(diào)用實(shí)現(xiàn)類接口中定義的方法
- 本質(zhì)上是兩個(gè)獨(dú)立變化的維度,一個(gè)抽象層引用另一個(gè)抽象層的東西,以實(shí)現(xiàn)通過實(shí)現(xiàn)類進(jìn)行業(yè)務(wù)方法的調(diào)用
核心代碼
- 抽象類
- 實(shí)現(xiàn)接口
- 客戶端
-
橋接器
+關(guān)注
關(guān)注
0文章
82瀏覽量
45569
發(fā)布評(píng)論請(qǐng)先 登錄
關(guān)于橋接模式遇到的問題
優(yōu)化電動(dòng)汽車的結(jié)構(gòu)性能
DS31256 HDLC控制器的配置步驟—橋接模式

設(shè)計(jì)模式之結(jié)構(gòu)型模式

橋接模式的目標(biāo)與設(shè)計(jì)

設(shè)計(jì)模式結(jié)構(gòu)性:適配器模式

設(shè)計(jì)模式結(jié)構(gòu)性:組合模式

設(shè)計(jì)模式結(jié)構(gòu)性:門面模式

設(shè)計(jì)模式結(jié)構(gòu)性:享元模式

設(shè)計(jì)模式結(jié)構(gòu)性:代理模式

遠(yuǎn)程網(wǎng)關(guān)橋接模式實(shí)現(xiàn)同一局域網(wǎng)組網(wǎng)管理(Superlink)

橋接模式應(yīng)用場景

評(píng)論