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