橋接設計模式
- 🚩什么是橋接設計模式?
- 🚩橋接設計模式的特點
- 🚩橋接設計模式的結構
- 🚩橋接設計模式的優缺點
- 🚩橋接設計模式的Java實現
- 🚩代碼總結
- 🚩總結
🚩什么是橋接設計模式?
橋接模式(Bridge Pattern) 是 結構型設計模式,它將 抽象部分 與 實現部分 分離,使它們可以 獨立變化。橋接模式通過 組合 而不是繼承來實現抽象與實現的解耦。
使用場景
-
當需要 避免抽象與實現之間的永久綁定 時。
-
當 抽象部分 和 實現部分 都需要 獨立擴展 時。
-
當需要 在運行時切換實現 時。
🚩橋接設計模式的特點
-
分離抽象與實現:橋接模式將抽象部分與實現部分分離,使它們可以獨立變化。
-
靈活性:抽象部分和實現部分可以獨立擴展,互不影響。
-
可擴展性:新增抽象或實現時,無需修改現有代碼。
-
解耦:通過組合關系替代繼承關系,降低系統的耦合度。
🚩橋接設計模式的結構
橋接模式主要包含以下部分:
-
Abstraction(抽象部分):定義抽象接口,并維護一個對 實現部分 的引用。
-
RefinedAbstraction(擴展抽象部分):對抽象部分進行擴展,提供更多的功能。
-
Implementor(實現部分接口):定義實現部分的接口,供抽象部分調用。
-
ConcreteImplementor(具體實現部分):實現 Implementor 接口,提供具體的實現。
🚩橋接設計模式的優缺點
? 優點
-
分離抽象與實現:抽象部分和實現部分可以獨立變化,互不影響。
-
靈活性:可以在運行時動態切換實現。
-
可擴展性:新增抽象或實現時,無需修改現有代碼。
-
解耦:通過組合關系替代繼承關系,降低系統的耦合度。
? 缺點
-
增加復雜性:橋接模式引入了更多的類和對象,增加了系統的復雜性。
-
設計難度:需要正確識別抽象部分和實現部分,設計難度較高。
🚩橋接設計模式的Java實現
代碼地址:GitHub
- 首先創建
實現部分接口Color
,定義方法OperationImp()
。
/*** @author hanson.huang* @version V1.0* @InterfaceName Color* @Description 實現部分接口 Color* @date 2025/3/24 10:46**/
public interface Color {public void OperationImp(String name);
}
- 創建
抽象產品類Product
,定義抽象方法 Operation()
,并維護一個對接口Color
的引用。
/*** @author hanson.huang* @version V1.0* @ClassName Product* @Description 產品抽象類* @date 2025/3/24 10:40**/
public abstract class Product {private String name;protected Color color;public void setName(String name) {this.name = name;}public String getName() {return name;}public void setColor(Color color) {this.color = color;}public abstract void Operation();
}
- 創建
擴展抽象部分 ProductA
,實現Operation()
方法,調用實現部分
的方法。
/*** @author hanson.huang* @version V1.0* @ClassName ProductA* @Description 擴展抽象部分 ProductA* @date 2025/3/24 10:48**/
public class ProductA extends Product {@Overridepublic void Operation() {color.OperationImp(this.getName());}
}
-
創建
具體實現部分 Red 和 Blue
,分別實現OperationImp()
方法。- Red
/*** @author hanson.huang* @version V1.0* @ClassName Red* @Description 具體實現部分 Red* @date 2025/3/24 10:49**/ public class Red implements Color {@Overridepublic void OperationImp(String name) {System.out.println(name + ":紅色");} }
- Blue
/*** @author hanson.huang* @version V1.0* @ClassName Blue* @Description 具體實現部分 Blue* @date 2025/3/24 10:49**/ public class Blue implements Color {@Overridepublic void OperationImp(String name) {System.out.println(name + ":藍色");} }
-
測試橋接模式
/*** @author hanson.huang* @version V1.0* @ClassName BridgePattern* @Description 測試橋接模式* @date 2025/3/24 10:59**/
public class BridgePattern {public static void main(String[] args) {Product productA1 = new ProductA();Product productA2 = new ProductA();Red red = new Red();productA1.setName("產品A1");productA1.setColor(red);productA1.Operation();Blue blue = new Blue();productA2.setName("產品A2");productA2.setColor(blue);productA2.Operation();}
}
📌 運行結果
🚩代碼總結
-
抽象部分
Product
定義抽象方法Operation()
,并維護一個對 實現部分Color
的引用。 -
擴展抽象部分
ProductA
實現Operation()
方法,調用 實現部分 的方法。 -
實現部分接口
Color
定義方法OperationImp()
。 -
具體實現部分
Red
和Blue
分別實現OperationImp()
方法。
🚩總結
-
橋接模式(Bridge Pattern) 將 抽象部分 與 實現部分 分離,使它們可以 獨立變化。
-
適用于 避免抽象與實現之間的永久綁定、獨立擴展抽象與實現 或 在運行時切換實現 的場景。
-
Java 實現 需要 定義抽象部分、實現部分接口 以及 具體實現部分,并通過組合關系將兩者連接起來。
? 適用場景:
-
需要 避免抽象與實現之間的永久綁定 時。
-
需要 獨立擴展抽象與實現 時。
-
需要 在運行時切換實現 時。
創作不易,不妨點贊、收藏、關注支持一下,各位的支持就是我創作的最大動力??