橋接模式(Bridge):將
抽象部分 與
它的實現部分 分離,使他們都可以獨立的變化。
實現系統可能有多角度的分類 (如果用繼承來思考,
可能拿哪一種角度當做父類別都不恰當),而
每一種分類都有可能發生變化,那麼就把這種多角度分離開來,讓它們獨自變化,減少它們之間的耦合。
當我們發現需要多角度去分類實現物件時,只用繼承會造成大量的類別增加,不能滿足開放-封閉原則時,就應該要考慮使用橋接模式。
選擇一個角度當做抽象部分,另外一個角度則以 抽象實現 聚合進 你選定的主抽象部分,兩者都可以隨變化應變!
物件的繼承關係是在
編譯時就已經定義好了,所以無法在執行時改變父類別繼承的實現。
子類別的實現與其父類別有非常緊密的依賴關係,以至於父類別實現中的任何變化必然會導致子類別發生變化。當需要複用子類別時,如果繼承下來的實現不適合解決新的問題,則父類別必須重寫或被其他更適合的類別替換。這種依賴關係限制了靈活性,也限制了複用性。
合成/聚合 複用原則:
儘量使用 合成/聚合,儘量不要使用類別繼承。使用繼承時,一定要在是
is-a 的關係之下才用,而不是任何時候都用。
參考:
1. 大話設計模式
2.
http://www.jdon.com/designpatterns/bridge.htm
... ...
No comments:
Post a Comment