農林漁牧網

您現在的位置是:首頁 > 農業

「設計模式」22-橋接模式

2022-02-07由 程式設計師楊小哥 發表于 農業

橋接模式是什麼意思

橋接模式

將抽象部分與它的實現部分分離,使他們都可以獨立的變化。

橋接模式解決了什麼問題?

如果一個需求用面向物件來處理,勢必涉及繼承的問題。

但是繼承物件的繼承關係是在編譯時就定義好了,所以無法在執行時改變從父類繼承的實現。

子類的實現與它的父類有非常緊密的依賴關係,以至於父類實現的任何變化必然會導致子類發生變化。

當你需要複用子類時,如果繼承下來的實現不適合解決新的問題,則父類必須重寫或被其他更適合的類替換。

這種依賴關係限制了靈活性並最終限制了複用性。

在面向物件設計中,還有一個很重要的原則,

合成/聚合複用原則

優先使用物件聚合,而不是類繼承。

合成(Composition,也有翻譯成組合)和聚合(Aggregation)都是關聯的特殊種類。

聚合表示一種弱的‘擁有’關係,體現的是A物件可以包含B物件,但B物件不是A物件的一部分;合成則是一種強的‘擁有’關係,體現了嚴格的部分和整體的關係,部分和整體的生命週期一樣。

比方說,大雁有兩個翅膀,翅膀與大雁是部分和整體的關係,並且它們的生命週期是相同的,於是大雁和翅膀就是合成關係。

而大雁是群居動物,所以每隻大雁都是屬於一個雁群,一個雁群可以有多隻大雁,所以大雁和雁群是聚合關係。

合成/聚合複用原則的好處是,優先使用物件的合成/聚合將有助於你保持每個類被封裝,並被集中在單個任務上。

這樣類和類繼承層次會保持較小規模,並且不太可能增長為不可控制的龐然大物。

「設計模式」22-橋接模式