l
適用性n
類的抽象以及他的實現都應該可以通過生成子類的方法加以擴充。
n如果任何一種擴充套件都會導致類以幾何級數來增長,這就說明你需要將乙個物件分解為兩個部分,這種類層次稱為「巢狀的普化 nested generalizations」;
l一般來講,implementor只提供一些基本操作,而abastraction則定義了一些基於這些基本操作的較高層次的操作。
lbridge pattern的優點:
n是的介面與實現分離,乙個抽象類的實現可以在執行時刻進行配置,乙個物件甚至可以在執行時刻改變他的實現。
n提高括擴充性:你可以單獨對abstraction或implementor的類層次進行擴充。
n實現細節對客戶透明,你可以完全對客戶隱藏細節。在c++中,implementor類的類介面可以在乙個似有的標頭檔案中定義,這個檔案不提供給客戶,這樣你就可以對客戶徹底的隱藏了乙個類的實現部分。l實現
n有一種特殊的情況是只有乙個implementor類,這是bridge的一種退化。
nabstraction有三種方法來建立implementor;
uabstraction知道所有的concreteimplementor,
所以就在自己的構造器中建立implementor;
uabstraction建立乙個預設的implementor,然後根據需要改變這個實現;
u引入factory,
這樣abstraction就不需要知道任何具體的implementor。我推薦使用這樣的方法。
圖1 橋接模式的典型結構
關於p106中提到的set, linkedset, hashset和linkedlist, hashtable的關係,書中說是一種退化的橋接,我也可以說這是一種adapter,我們可以來看兩者的類結果對比,見圖2和圖3。通過對比,我們可以發現,p106的應用只是子類的實現多一些,相當於有多個adapter。
作者這麼說也是隊的,bridge和adapter本身就是相似的。
圖2 介面卡模式的典型結構
圖3 p106中提到的應用
設計模式 Bridge模式
原來對bridge模式理解不是很深入,感覺和build模式很相似,今天又看了四人幫的關於bridge模式的描述,有些新的理解 先來說下適用性 1 不想抽象和實現之間有乙個固定的繫結關係。因為程式在執行時實現部分可以被選擇或者切換 2 類的抽象以及它的實現都應該可以通過生成子類的方法加以擴充。這時br...
橋梁模式 bridge
橋梁模式的用意是將問題的抽象和實現分離開來實現,通過用聚合代替繼承來解決子類 性增長的問題。比如我們有乙個畫圖程式 有2個圖形 circle rectangle 和2種畫圖方法 drawing1 drawing2 圖形可能會使用drawing1來畫圖 也可能使用drawing2來畫圖 在這個畫圖程式...
橋梁 Bridge 模式
9 橋梁 bridge 模式 橋梁模式的結構圖 這個系統含有兩個等級結構 facade模式的角色 例項 抽象化角色 public abstract class abstaction 修正抽象化角色 public class refinedabstraction extends abstaction ...