「設計模式」22-橋接模式
2022-02-07由 程式設計師楊小哥 發表于 農業
橋接模式是什麼意思
橋接模式
將抽象部分與它的實現部分分離,使他們都可以獨立的變化。
橋接模式解決了什麼問題?
如果一個需求用面向物件來處理,勢必涉及繼承的問題。
但是繼承物件的繼承關係是在編譯時就定義好了,所以無法在執行時改變從父類繼承的實現。
子類的實現與它的父類有非常緊密的依賴關係,以至於父類實現的任何變化必然會導致子類發生變化。
當你需要複用子類時,如果繼承下來的實現不適合解決新的問題,則父類必須重寫或被其他更適合的類替換。
這種依賴關係限制了靈活性並最終限制了複用性。
在面向物件設計中,還有一個很重要的原則,
合成/聚合複用原則
優先使用物件聚合,而不是類繼承。
合成(Composition,也有翻譯成組合)和聚合(Aggregation)都是關聯的特殊種類。
聚合表示一種弱的‘擁有’關係,體現的是A物件可以包含B物件,但B物件不是A物件的一部分;合成則是一種強的‘擁有’關係,體現了嚴格的部分和整體的關係,部分和整體的生命週期一樣。
比方說,大雁有兩個翅膀,翅膀與大雁是部分和整體的關係,並且它們的生命週期是相同的,於是大雁和翅膀就是合成關係。
而大雁是群居動物,所以每隻大雁都是屬於一個雁群,一個雁群可以有多隻大雁,所以大雁和雁群是聚合關係。
合成/聚合複用原則的好處是,優先使用物件的合成/聚合將有助於你保持每個類被封裝,並被集中在單個任務上。
這樣類和類繼承層次會保持較小規模,並且不太可能增長為不可控制的龐然大物。