非同步神器async-await
阿新 • • 發佈:2020-09-17
定義
橋接模式是抽象的部分和它實現的部分分離,使得它們可以獨立地變化,它是一種物件結構型模式。
案例
描述
電腦產品可以分為膝上型電腦,臺式電腦和平板電腦。然後膝上型電腦根據品牌,可以分為蘋果電腦,華為電腦,小米電腦。對臺式電腦和平板電腦也是如此。
需求變動
1、需要新加入一個品牌
如果要新加入一個品牌,那麼這個品牌對每個產品都進行生成,由此新增很多類
2、需要新加入一個產品
如果要新加入一個產品,那麼這個產品也要被所有品牌實現,由此新增很多類
解決方式
這個場景中兩個緯度的變化:品牌和電腦型別
可以通過組合的方式,組合出我們想要的產品和品牌
核心程式碼
/** * 抽象類可以有成員變數 * 通過組合brand的方式實現 */ public abstract class Computer { private Brand brand; public Computer(Brand brand) { this.brand = brand; } public String info() { return brand.info(); } public abstract void introduce(); }
Comsumer類可以自己從兩個緯度組合程式碼
public static void main(String[] args) {
new Notebook(new AppleBrand()).introduce();
new Desktop(new XiaoMiBrand()).introduce();
new Tablet(new HuaweiBrand()).introduce();
}
UML圖
關鍵
通過抽象類computer來組合介面Brand
優劣
優勢
- 橋接模式偶爾類似於多繼承的方式,但是多繼承方案違背了類的單一職責,複用性比較差,類的個數也比較多。橋接模式是比多繼承更好的解決方案,極大的減少了子類的個數,從而降低了管理成本和維護成本。
- 橋接模式提高了任務的可擴充性,在兩個變化緯度中任意擴充套件一個緯度,都不需要修改原有系統。符合開閉原則,就像一座橋,把多個緯度連線了起來。
劣勢
- 橋接模式的引入會增加系統的理解和設計難度,由於聚合關聯關係建立在抽象層,要求開發者針對抽象進行設計和程式設計。
- 橋接模式要求正確識別出系統中的兩個獨立變化的緯度,因此其使用範圍具有一定的侷限性。