1. 程式人生 > >設計模式讀書筆記之橋接模式(bridge pattern)

設計模式讀書筆記之橋接模式(bridge pattern)

橋接模式:將抽象部分和他的實現部分分離,使他們可以獨立地變化。

我個人認為,說橋接模式和享元模式, 與其說是一種設計模式,還不如說是一種思想, 它體現在對系統或物件的分析階段。當你用橋接模式的思想去分析一個系統或物件,然後用程式碼實現它之後拿給別人看, 未必有人能說出你用了橋接模式. 橋接模式是為了解決這個問題而來的:繼承關係是一種緊密的依賴關係,以至於父類有任何改變必將導致子類也發生變化,而且繼承結構會隨著新功能的增加而不斷增加,類越來越多。橋接模式是把繼承關係變成合成/聚合關係。

拿《大話設計模式》中的例子來解說.手機可以按照品牌來分類,則有手機品牌M,手機品牌N之分,現在的每個手機都有很多軟體,比如通訊錄,手機遊戲等等,如果從品牌角度考慮手機系統的繼承關係,則有如下的類圖:

當然也可以從軟體角度來重新劃分該系統:

用橋接模式改進的類圖:

從而把手機系統劃分為品牌和軟體,使他們可以獨立的變化。

經典例子:《java與模式》中說大多數的驅動器(driver)都是橋接模式的應用, 使用驅動程式的應用系統是抽象化的角色,而驅動器本身是實現化的角色. 我沒有從事過硬體或者驅動開發, 所以理解不是很深刻. 但是jdbc的例子可以說一說.

jdbc為所有的資料庫提供通用的介面, 一個應用系統可以根據需要選擇合適的驅動程式, 通過驅動程式向資料庫傳送指令. 這個過程就是抽象角色把行為委託給實現角色的過程. 則應用程式和具體的驅動程式都可以獨立變化.

本例將不給出程式碼.