22 Bridge(橋接,結構型)
-
- 需要將“類的功能層次結構”和“類的實現層次結構”分離爲兩個獨立的類層次結構。然後在它們之間搭建一座bridge。
-
- 動機:
- 橋接模式的用意是將抽象與實現解耦,使得二者可以獨立地變化
- 抽象(Abstraction)不等於接口(Interface),存在於多個實體中的共同的概念性聯繫,就是抽象。接口是一種抽象的方式。
- 所謂強耦和,就是在編譯時期已經確定的,無法在運行時期動態改變的關聯;所謂弱耦和,就是可以動態地確定並且可以在運行時期動態地改變的關聯。
- 當抽象可以有幾種可能的實現之一時,通常容納它們的方法是使用繼承。
- 但是這種方法並不總是足夠靈活。
- 繼承將實現永久地綁定到抽象上,這使得獨立地修改、擴展和重用抽象和實現變得困難。
- 橋接模式的用意是將抽象與實現解耦,使得二者可以獨立地變化
- 什麼時候用:
- 您希望避免抽象及其實現之間的永久綁定。
- 當實現必須在運行時被選擇或切換時。
- 抽象和它們的實現都應該通過子類化來擴展。
- 在這種情況下,橋接模式允許您組合不同的抽象和實現,並獨立地擴展它們。
- 抽象實現中的更改應該不會對客戶機產生影響。
- 您希望避免抽象及其實現之間的永久綁定。
- 結構:
- 參與者:
- 參與者:
- 協作:
- 抽象將客戶端請求轉發給它實現者對象。
- 後果:
- 接口和實現解耦
- 增加了可擴展性
- 對客戶端隱藏實現細節。
- 例:
- 動機:
-
- 總結:
- 抽象方法的繼承子類等價於增加新方法
- 總結: