一、橋接模式
定義:將抽象化和實現化脫耦,使得二者可以可以獨立的變化。
其中有三個關鍵字抽象化、實現化、脫耦。
- 抽象化:一組對象能夠有相同的概念聯繫,那麼我們可以使用一個類來描述,如果一些類具有相同的概念聯繫,那麼我們可以使用一個抽象類來描述這就是抽象化,如果更復雜我們可以使用繼承用父子來描述。
- 實現化:一個類的實例就是這個類的實現化,也是這個類的父類的實現化。
- 脫耦:強耦合在編譯時就確定,弱耦合可以在運行時動態改變關聯。在Java中繼承是強關聯,聚合是弱關聯。
二、傳統繼承模式與橋接模式
當一個類存在兩個維度的變化並且衍生出不同的類,比如車這個主體有引擎並且,車會有公交車、轎車、跑車等等、引擎有燒油、用電、用氣的。
1.傳統繼承模式
當需要不同類型的汽車時繼承方式會產生類似笛卡爾積數量的類。當要新增一種類型的車時,需要對引擎進行修改對維護和擴張都不利。
2.橋接模式
UML類圖
此模式基本機構爲兩層抽象化角色(Car、Engine)和修正抽象化角色(Saloon、Bus、GasonlineEngine)。而Car和Engine存在組合的關係。
這個模式主要是理解概念,代碼都很簡單。