Bridge Pattern
將抽象部分與實現部分分離,使它們都可以獨立地變化。
Example: 十二生肖
橋接模式會將類別分為兩類:
分別是抽象類別 (Abstraction) 與 實現類別 (Implementor) 。
抽象類別指的是高層級的抽象層。本身不具備具體邏輯。
而實現類別會由低層級的實作層來負責。
舉例:
抽象類別 -> 實現類別
通話介面 -> 室內電話、行動電話
登入介面 -> Web、App
優點:
透過分離抽象層與實作層,可根據需求在不同層級上,作相應的變化。
缺點:
會使程式碼複雜度提高。
與其他模式的比較:
[策略模式]:
策略模式屬於行為型 (behavioral) 的設計模式,
而橋接模式屬於結構型 (structural) 的設計模式。
這使著兩者在目的上,有著根本的不同。
策略模式可能會隨著運行,動態地調整策略。
而橋接模式則會像是兩種不同的實作架構。
[狀態模式]:
狀態模式屬於行為型 (behavioral) 的設計模式。
可能會在運行過程中改變內部狀態,進而改變具體行為。
舉例:
設計模式 | 使用情境 |
---|---|
策略模式 | 擁有多家第三方金流,需在主要金流服務掛點時,採用備用金流機制。 |
狀態模式 | 行人號誌小綠人會隨著當前標誌不同,顯示不同的圖樣。 |
橋接模式 | 框架實作資料庫連線的介面,與其各自不同的具體實作。 |
ʕ •ᴥ•ʔ:以Laravel而言,設計模式到後來常常會混血,
最終還是回歸到S.O.L.I.D的思考。