Fork me on GitHub

4/18/2011

[DP] Bridge 橋接模式



橋接模式(Bridge):將 抽象部分它的實現部分 分離,使他們都可以獨立的變化。

實現系統可能有多角度的分類 (如果用繼承來思考,可能拿哪一種角度當做父類別都不恰當),而每一種分類都有可能發生變化,那麼就把這種多角度分離開來,讓它們獨自變化,減少它們之間的耦合。

當我們發現需要多角度去分類實現物件時,只用繼承會造成大量的類別增加,不能滿足開放-封閉原則時,就應該要考慮使用橋接模式。

選擇一個角度當做抽象部分,另外一個角度則以 抽象實現 聚合進 你選定的主抽象部分,兩者都可以隨變化應變

物件的繼承關係是在編譯時就已經定義好了,所以無法在執行時改變父類別繼承的實現。子類別的實現與其父類別有非常緊密的依賴關係,以至於父類別實現中的任何變化必然會導致子類別發生變化。當需要複用子類別時,如果繼承下來的實現不適合解決新的問題,則父類別必須重寫或被其他更適合的類別替換。這種依賴關係限制了靈活性,也限制了複用性。

合成/聚合 複用原則:儘量使用 合成/聚合,儘量不要使用類別繼承。使用繼承時,一定要在是 is-a 的關係之下才用,而不是任何時候都用。

參考:
1. 大話設計模式
2. http://www.jdon.com/designpatterns/bridge.htm

... ...

No comments:

Post a Comment