1. 程式人生 > 實用技巧 >非同步神器async-await

非同步神器async-await

定義

橋接模式是抽象的部分和它實現的部分分離,使得它們可以獨立地變化,它是一種物件結構型模式。

案例

描述

電腦產品可以分為膝上型電腦,臺式電腦和平板電腦。然後膝上型電腦根據品牌,可以分為蘋果電腦,華為電腦,小米電腦。對臺式電腦和平板電腦也是如此。

需求變動
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

優劣

優勢

  • 橋接模式偶爾類似於多繼承的方式,但是多繼承方案違背了類的單一職責,複用性比較差,類的個數也比較多。橋接模式是比多繼承更好的解決方案,極大的減少了子類的個數,從而降低了管理成本和維護成本。
  • 橋接模式提高了任務的可擴充性,在兩個變化緯度中任意擴充套件一個緯度,都不需要修改原有系統。符合開閉原則,就像一座橋,把多個緯度連線了起來。

劣勢

  • 橋接模式的引入會增加系統的理解和設計難度,由於聚合關聯關係建立在抽象層,要求開發者針對抽象進行設計和程式設計。
  • 橋接模式要求正確識別出系統中的兩個獨立變化的緯度,因此其使用範圍具有一定的侷限性。