java設計模式(5)-橋接模式

java設計模式(4)-介面卡模式

java設計模式(3)-原型模式和建造者模式

java設計模式(2)-工廠模式

java設計模式(1)-單例模式

本節分享我對橋接模式的理解,舉一個現實生活中手機的操作問題,手機分為不同的類別:直立式的手機、摺疊式的手機、旋轉式的手機。不同的手機類別分為不通的型號:xiaoMi、華為、Vivo……等。

傳統解決手機使用問題的UML類圖:

java設計模式(5)-橋接模式

傳統方式解決手機操作問題的分析:

1)擴充套件性維問題(類爆炸),如果我們增加手機的樣式(旋轉式),需要增加各個品牌的手機的類,同樣如果們增加一個手機品牌,就需要增加手機的樣式類。

2)違反了單一職責原則,當我們增加手機的樣式時,要同時增加所有品牌的手機,這樣增加了程式碼的維護成本。

3)解決方案,橋接模式。

橋接模式(Bridge)基本介紹

1)橋接模式是指:將抽象和實現放到連個類層次中,實現抽象和實現分離和改變,為了解耦。

2)是一種結構型設計模式。

3)橋接模式基於類的最小設計原則,透過封裝、繼承、聚合行為讓不同的類承擔不同的職責。

它的主要特點是把抽象(Abstraction)與行為實現(Implementation)分離開來,從而可以保持各部分的獨立性以及應對他們的功能。

橋接模式的原理UML圖:

java設計模式(5)-橋接模式

1)Client類是呼叫者。

2)抽象類(Abstration):維護了Implementor及其子類的的聚合關係。Abstration充當RefinedAbstration和Implementor的橋。

3)RefinedAbstration繼承Abstration,具體的操作透過呼叫Abstration實現。

橋接模式解決手機操作問題

1)使用橋接模式改進傳統的方式,讓程式具有更好的擴充套件性,利於程式的維護。

2)橋接模式解決手機的UML類圖。

java設計模式(5)-橋接模式

java設計模式(5)-橋接模式

橋接模式在JDBC的原始碼剖析

1) Jdbc 的 Driver介面,如果從橋接模式來看,Driver就是一個介面,下面可以有MySQL的Driver,Oracle的Driver,這些就可以當做實現介面類

2) 程式碼分析+Debug原始碼

橋接模式的注意事項和細節

1)實現了抽象和實現部分的分離,從而極大的提高了系統的靈活性,讓抽象部分和實現部分獨立開來,這有助於系統進行分層設計,從而更好的結構化系統。

2)

對於系統的高層部分,只需要知道抽象部分和實現部分的介面就可以了,其它的部分由具體業務來完成。

3) 橋接模式替代多層繼承方案,可以減少子類的個數,降低系統的管理和維護成本。

4) 橋接模式的引入增加了系統的理解和設計難度,由於聚合關聯關係建立在抽象層,要求開發者針對抽象進行設計和程式設計

5) 橋接模式要求正確識別出系統中兩個獨立變化的維度,因此其使用範圍有一定的侷限性,即需要有這樣的應用場景。

橋接模式其它應用場景

1) 對於那些不希望使用繼承或因為多層次繼承導致系統類的個數急劇增加的系統,橋接模式尤為適用。

2) 常見的應用場景:

-JDBC驅動程式

-銀行轉賬系統

轉賬分類: 網上轉賬,櫃檯轉賬,AMT轉賬

轉賬使用者型別:普通使用者,銀卡使用者,金卡使用者。。

-訊息管理

訊息型別:即時訊息,延時訊息

訊息分類:手機簡訊,郵件訊息,QQ訊息