# What is Bridge Pattern 橋接模式(Bridge Pattern),旨在將抽象部分和實現部分解耦,使它們可以獨立地變化。該模式通過將抽象和實現分離,使它們可以獨立地進行擴展和修改,同時通過橋接(Bridge)將它們連接起來。 將一個事物原本耦合在一起的東西,通過定義成抽象和實 ...
What is Bridge Pattern
橋接模式(Bridge Pattern),旨在將抽象部分和實現部分解耦,使它們可以獨立地變化。該模式通過將抽象和實現分離,使它們可以獨立地進行擴展和修改,同時通過橋接(Bridge)將它們連接起來。
將一個事物原本耦合在一起的東西,通過定義成抽象和實現兩個維度,做到解耦,解耦就是為了能組成更多的組合。
怎麼劃分抽象和現實?
在橋接模式中,抽象部分和實現部分是兩個相對的概念,只是用於表示系統中的兩個不同維度或變化的方向,誰是抽象、誰是具體並不是很重要,重要的是解耦出兩個維度就行。
-
抽象部分(Abstraction)
表示高層的抽象介面或類,它定義了對外的介面方法和抽象操作,描述了一個對象的行為和功能。抽象部分關註的是系統的功能、行為和邏輯。 -
實現部分(Implementation)
表示底層的具體實現介面或類,它實現了抽象部分所定義的介面或類,並提供了具體的功能實現。實現部分關註的是系統的實現細節、數據存儲、演算法等底層的技術細節。
通常情況下,抽象部分和實現部分都是通過介面或抽象類來定義的。抽象部分定義了高層的抽象介面或類,其中包含了對實現部分的引用(可以是實現部分的介面類型),以及定義了高層的操作和功能方法。實現部分則實現了抽象部分定義的介面或類,提供了具體的功能實現。
Example
好的,下麵是一個用 Java 代碼舉例說明橋接模式的示例:
首先,我們考慮一個圖形繪製的場景,其中有多種不同的圖形(如圓形、矩形)和多種不同的顏色(如紅色、藍色)。我們將使用橋接模式來實現圖形和顏色的解耦。
定義抽象
// 定義抽象部分的介面 Shape,其中聲明瞭繪製圖形的抽象方法
public interface Shape {
void draw();
}
// 定義實現部分的介面 Color,其中聲明瞭填充顏色的抽象方法
public interface Color {
void fill();
}
//接著,實現具體的圖形類,例如 Circle 和 Rectangle:
public class Circle implements Shape {
private Color color;
public Circle(Color color) {
this.color = color;
}
public void draw() {
System.out.print("繪製圓形,");
color.fill();
}
}
public class Rectangle implements Shape {
private Color color;
public Rectangle(Color color) {
this.color = color;
}
public void draw() {
System.out.print("繪製矩形,");
color.fill();
}
}
具體的顏色類,例如 RedColor 和 BlueColor:
public class RedColor implements Color {
public void fill() {
System.out.println("填充紅色");
}
}
public class BlueColor implements Color {
public void fill() {
System.out.println("填充藍色");
}
}
最後,在客戶端代碼中使用橋接模式來繪製圖形:
public class Client {
public static void main(String[] args) {
Shape circle = new Circle(new RedColor());
circle.draw();
Shape rectangle = new Rectangle(new BlueColor());
rectangle.draw();
}
}
out
繪製圓形,填充紅色
繪製矩形,填充藍色