23种设计模式之桥梁模式
橋梁模式的定義
定義: 將抽象和實現解耦, 使得兩者可以獨立的變化
通俗的說, 就是一個類調用另一個類中的方法, 需要一個橋梁, 通過聚合的關系調用
其類圖如下:
?
其中角色說明如下:
抽象角色的部分實現是由實現角色完成的
實現化角色代碼:
?
具體實現化角色代碼:
?
抽象化角色代碼:
?
具體抽象化角色代碼:
?
場景類代碼:
?
橋梁模式是一個很簡單的模式, 它只是使用了類間的聚合關系、繼承、覆寫等常用功能, 但是它卻提供了一個非常清晰、穩定的架構.
橋梁模式的應用
橋梁模式的優點:
橋梁模式的使用場景:
使用橋梁模式主要考慮如何拆分抽象和實現,并不是一設計繼承就要考慮使用該模式. 橋梁模式的意圖還是對變化的封裝, 盡量把可能變化的因素封裝到最細、最小的邏輯單元中,避免風險擴散.因此在進行系統設計時,發現類的繼承有N層時,可以考慮使用橋梁模式
橋梁模式在Java應用中的一個非常典型的例子就是JDBC驅動器。JDBC為所有的關系型數據庫提供一個通用的界面。一個應用系統動態地選擇一個合適的驅動器,然后通過驅動器向數據庫引擎發出指令。這個過程就是將抽象角色的行為委派給實現角色的過程。
抽象角色可以針對任何數據庫引擎發出查詢指令,因為抽象角色并不直接與數據庫引擎打交道,JDBC驅動器負責這個底層的工作。由于JDBC驅動器的存在,應用系統可以不依賴于數據庫引擎的細節而獨立地演化;同時數據庫引擎也可以獨立于應用系統的細節而獨立的演化。兩個獨立的等級結構如下圖所示,左邊是JDBC API的等級結構,右邊是JDBC驅動器的等級結構。應用程序是建立在JDBC API的基礎之上的。
?
應用系統作為一個等級結構,與JDBC驅動器這個等級結構是相對獨立的,它們之間沒有靜態的強關聯。應用系統通過委派與JDBC驅動器相互作用,這是一個橋梁模式的例子。
JDBC的這種架構,把抽象部分和具體部分分離開來,從而使得抽象部分和具體部分都可以獨立地擴展。對于應用程序而言,只要選用不同的驅動,就可以讓程序操作不同的數據庫,而無需更改應用程序,從而實現在不同的數據庫上移植;對于驅動程序而言,為數據庫實現不同的驅動程序,并不會影響應用程序。
總結
以上是生活随笔為你收集整理的23种设计模式之桥梁模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 利用spi发送接收信息c语言,SPI接收
- 下一篇: 23种设计模式之观察者模式