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();
}
}
輸出結果:
蘋果筆記本
聯想臺式機
四、類圖示意:
五、好處分析:
六、弊端分析:
七、最佳實現
八、現已經使用的場景