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

我個人認為,說橋接模式和享元模式, 與其說是一種設計模式,還不如說是一種思想, 它展現在對系統或對象的分析階段。當你用橋接模式的思想去分析一個系統或對象,然後用代碼實作它之後拿給别人看, 未必有人能說出你用了橋接模式. 橋接模式是為了解決這個問題而來的:繼承關系是一種緊密的依賴關系,以至于父類有任何改變必将導緻子類也發生變化,而且繼承結構會随着新功能的增加而不斷增加,類越來越多。橋接模式是把繼承關系變成合成/聚合關系。
拿《大話設計模式》中的例子來解說.手機可以按照品牌來分類,則有手機品牌M,手機品牌N之分,現在的每個手機都有很多軟體,比如通訊錄,手機遊戲等等,如果從品牌角度考慮手機系統的繼承關系,則有如下的類圖:
當然也可以從軟體角度來重新劃分該系統:
用橋接模式改進的類圖:
進而把手機系統劃分為品牌和軟體,使他們可以獨立的變化。
經典例子:《Java與模式》中說大多數的驅動器(driver)都是橋接模式的應用, 使用驅動程式的應用系統是抽象化的角色,而驅動器本身是實作化的角色. 我沒有從事過硬體或者驅動開發, 是以了解不是很深刻. 但是jdbc的例子可以說一說.
jdbc為所有的資料庫提供通用的接口, 一個應用系統可以根據需要選擇合适的驅動程式, 通過驅動程式向資料庫發送指令. 這個過程就是抽象角色把行為委托給實作角色的過程. 則應用程式和具體的驅動程式都可以獨立變化.
本例将不給出代碼.