適用性 |
- 你不希望在抽象和它的實(shí)現(xiàn)部分之間有一個固定的綁定關(guān)系。例如這種情況可能是因?yàn)椋诔绦蜻\(yùn)行時刻實(shí)現(xiàn)部分應(yīng)可以被選擇或者切換。
- 類的抽象以及它的實(shí)現(xiàn)都應(yīng)該可以通過生成子類的方法加以擴(kuò)充。這時B r i d g e 模式使你可以對不同的抽象接口和實(shí)現(xiàn)部分進(jìn)行組合,并分別對它們進(jìn)行擴(kuò)充。
- 對一個抽象的實(shí)現(xiàn)部分的修改應(yīng)對客戶不產(chǎn)生影響,即客戶的代碼不必重新編譯。
- (C + +)你想對客戶完全隱藏抽象的實(shí)現(xiàn)部分。在C + +中,類的表示在類接口中是可見的。
- 有許多類要生成。這樣一種類層次結(jié)構(gòu)說明你必須將一個對象分解成兩個部分。R u m b a u g h 稱這種類層次結(jié)構(gòu)為“嵌套的普化”(nested generalizations )。
- 你想在多個對象間共享實(shí)現(xiàn)(可能使用引用計數(shù)),但同時要求客戶并不知道這一點(diǎn)。一個簡單的例子便是C o p l i e n 的S t r i n g 類[ C o p 9 2 ],在這個類中多個對象可以共享同一個字符串表示(S t r i n g R e p )。
|