java設計模式7——橋接模式

java設計模式7——橋接模式

一、橋接模式介紹

橋接模式是將抽象部分與它的實現部分分離,使他們均可以獨立的變化。它是一種對象結構型模式,又稱爲柄體模式或接口模式。

二、解決問題

2.一、將複雜的組合設計問題轉變爲能夠橋接的組合問題。如電腦的例子,電腦有類型和品牌,二者能夠任意組合。

2.二、沒有用設計模式時的示意圖

2.三、使用橋接模式後的示意圖

將這個場景中的兩個變化的維度分離,品牌和類型。二者經過橋接進行兩兩組合。

三、代碼演示:

3.一、編寫品牌的抽象類

package com.xgp.company.結構性模式.橋接模式;

/**
 * 品牌類
 */
public interface Brand {
    void info();
}

3.二、由抽象類誕生出品牌

蘋果:

package com.xgp.company.結構性模式.橋接模式;

/**
 * 蘋果品牌
 */
public class Apple implements Brand {
    @Override
    public void info() {
        System.out.print("蘋果");
    }
}

聯想:

package com.xgp.company.結構性模式.橋接模式;

public class Laptop extends Computer {
    public Laptop(Brand brand) {
        super(brand);
    }

    @Override
    protected void info() {
        super.info();
        System.out.println("筆記本");
    }
}

3.三、電腦類型的抽象類

package com.xgp.company.結構性模式.橋接模式;

/**
 * 抽象的電腦類型類
 */
public abstract class Computer {

    //組合:品牌,電腦自帶品牌
    protected Brand brand;

    public Computer(Brand brand) {
        this.brand = brand;
    }

    protected void info() {
        //自帶品牌
        brand.info();
    }
}

3.四、由電腦類型的抽象類誕生實現類

臺式電腦:

package com.xgp.company.結構性模式.橋接模式;

public class Desktop extends Computer {
    public Desktop(Brand brand) {
        super(brand);
    }

    @Override
    protected void info() {
        super.info();
        System.out.println("臺式機");
    }
}

筆記本電腦:

package com.xgp.company.結構性模式.橋接模式;

public class Laptop extends Computer {
    public Laptop(Brand brand) {
        super(brand);
    }

    @Override
    protected void info() {
        super.info();
        System.out.println("筆記本");
    }
}

3.五、編寫測試類,進行橋接

package com.xgp.company.結構性模式.橋接模式;

public class Test {
    public static void main(String[] args) {
        //蘋果筆記本
        Computer computer = new Laptop(new Apple());
        computer.info();
        //聯想臺式機
        Computer computer12 = new Desktop(new Lenovo());
        computer12.info();
    }
}

輸出結果:

蘋果筆記本
聯想臺式機

四、類圖示意:

五、好處分析:

六、弊端分析:

七、最佳實現

八、現已經使用的場景

相關文章
相關標籤/搜索