【設計模式】(十四)–結構型模式–橋接模式
橋接模式定義
Decouple an abstraction from its implementation so that the two can vary independently.
意思是將抽象和實現解耦,是的兩者可以獨立的變化。
這種模式涉及到一個作爲橋接的接口,使得實體類的功能獨立於接口實現類。這兩種類型的類可被結構化改變而互不影響。
橋接模式有以下4個元素
- Abstraction 抽象類
- Implementation 抽象的實現類
- Refined 擴充的抽象類
- SpecificImplementation 具體實現類
橋接模式的優點
- 1、抽象和實現的分離。
- 2、優秀的擴展能力。
- 3、實現細節對客戶透明。
橋接模式的使用場景
- 1、如果一個系統需要在構件的抽象化角色和具體化角色之間增加更多的靈活性,避免在兩個層次之間建立靜態的繼承聯繫,通過橋接模式可以使它們在抽象層建立一個關聯關係。
- 2、對於那些不希望使用繼承或因爲多層次繼承導致系統類的個數急劇增加的系統,橋接模式尤爲適用。
- 3、一個類存在兩個獨立變化的維度,且這兩個維度都需要進行擴展。
橋接模式的簡單實現
類圖
實現
public class SanShaoCarFactory extends AbstractCarFactory {
public SanShaoCarFactory(Color color) {
super(color);
}
@Override
public void makeCar() {
System.out.println("三少汽車廠開始造車");
System.out.println("製造了一臺:" + color.getColor() + "的車");
}
public static void main(String[] args) {
Black black = new Black();
AbstractCarFactory sanShaoCarFactory = new SanShaoCarFactory(black);
sanShaoCarFactory.makeCar();
}
}
public abstract class AbstractCarFactory {
Color color;
public AbstractCarFactory(Color color) {
this.color = color;
}
public Color getColor() {
return color;
}
public abstract void makeCar();
}
public interface Color {
String getColor();
}
public class Black implements Color {
@Override
public String getColor() {
return "黑色";
}
}
結果