一、結構型設計模式
兩者有點相似,都是為了做到解耦的功能。
適配器模式是一種結構型設計模式,?它能使接口不兼容的對象能夠相互合作。
橋接模式是一種結構型設計模式,?可將一個大類或一系列緊密相關的類拆分為抽象和實現兩個獨立的層次結構,?從而能在開發時分別使用。
二、適配器模式的實際項目案例
1. 串口設備驅動適配
- 場景:舊設備的串口驅動函數為
uart_send_byte(uint8_t data)
,新系統統一要求serial_transmit(uint8_t* buf, uint16_t len)
接口。 - 適配方式:編寫適配器函數,將
serial_transmit
轉換為對uart_send_byte
的循環調用。 - 作用:新系統無需修改即可兼容舊設備驅動。
2. 第三方庫集成(如日志庫)
- 場景:項目原有日志接口為
log_info(const char* msg)
,引入的第三方庫日志函數為third_party_log(int level, const char* format, ...)
。 - 適配方式:實現適配器
log_info
,內部調用third_party_log(INFO_LEVEL, "%s", msg)
。 - 作用:項目代碼無需修改,即可使用第三方日志庫。
三、橋接模式的實際項目案例
1. LVGL(嵌入式 GUI 庫)
- 抽象層:控件邏輯(按鈕、標簽、列表等渲染規則、事件處理)。
- 實現層:硬件接口(顯示屏刷新
disp_drv.flush
、觸摸輸入indev_drv.read
)。 - 橋接方式:通過驅動結構體(
lv_disp_drv_t
)中的函數指針關聯抽象層與實現層。 - 作用:同一套 UI 邏輯可適配不同顯示屏(OLED/LCD)和硬件平臺(STM32/ESP32),新增硬件只需實現底層接口,無需修改 UI 邏輯。
四、一句話總結
- 橋接模式是 “未雨綢繆”:在設計初期就分離可能變化的維度,讓系統更靈活地應對未來擴展。
- 適配器模式是 “亡羊補牢”:在系統集成時解決已有組件的接口沖突,讓不兼容的代碼協同工作。