Bridge(桥接)--对象结构模式
Bridge(橋接)–對象結構模式
一、意圖
將抽象部分與它的實現部分分離,使它們都可以獨立的變化。
二、動機
1.由于某些類型的固有的實現邏輯,使得它們具有兩個變化的維度,乃至多個緯度的變化。
2.如何應對這種“多維度的變化”?如何利用面向對象技術來使得類型可以輕松地沿著兩個乃至多個方向變化,而不引入額外的復雜度?
三、適用性
1.你不希望在抽象和它的實現部分之間有一個固定的綁定關系。例如這種情況可能是因為,在程序運行時刻實現部分應可以被選擇或者切換。
2.類的抽象以及它的實現都應該部分進行組合,并分別對它們進行擴充。
3.對一個抽象的實現部分的修改應對客戶不產生影響,即客戶的代碼不必重新編譯。
4.(C++)你想對客戶完全隱藏抽象的實現部分。在C++中,類的表示在類接口中是可見的。
5.有時必須將一個對象分解成兩個部分。
6.你想在多個對象間共享實現(可能使用引用計數),但同時要求客戶并不知道這一點。
四、結構
五、效果
1.分離接口及其實現部分。
2.提高可擴充性。
3.實現細節對客戶透明。
六、實現
1.僅有一個Implementor。
2.創建正確的Implementor對象
3.共享Implementor對象。
4.采用多繼承機制。
七、要點總結
1.Bridge模式使用“對象間的組合關系”解耦了抽象和實現之間固有的綁定關系,使得抽象和實現可以沿著各自的維度來變化。所謂抽象和實現沿著各自緯度的變化,即“子類化”它們。
2.Bridge模式有時候類似于多繼承方案,但是多繼承方案往往違背單一職責原則(即一個類只有一個變化的原因),復用性比較差。Bridge模式是比多繼承方案更好的解決方法。
3.Bridge模式的應用一般在“兩個非常強的變化維度”,有時一個類也有多于兩個的變化維度,這時可以使用Bridge的擴展模式。
八、相關模式
Abstract Factory模式可以用來創建和配置一個特定的Bridge模式
Adapter模式用來幫助無關的類協同工作,它通常在系統設計完成才會被使用。然而,Bridge模式則是在系統開始時就被使用,它使得抽象接口和實現部分可以獨立進行改變
九、舉例說明
注重兩個維度的變化,感覺就像橋的兩邊各自改變各自的。實現變化,表現也可以變化。
看下圖很容易理解
本文為李建忠設計模式視頻的筆記以及《設計模式-可復用面向對象的軟件的基礎》和自己的部分見解
總結
以上是生活随笔為你收集整理的Bridge(桥接)--对象结构模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Adapter(适配器)--类对象结构型
- 下一篇: Composite(组合)--对象结构型