桥接设计模式
- 🚩什么是桥接设计模式?
- 🚩桥接设计模式的特点
- 🚩桥接设计模式的结构
- 🚩桥接设计模式的优缺点
- 🚩桥接设计模式的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 实现 需要 定义抽象部分、实现部分接口 以及 具体实现部分,并通过组合关系将两者连接起来。
✅ 适用场景:
-
需要 避免抽象与实现之间的永久绑定 时。
-
需要 独立扩展抽象与实现 时。
-
需要 在运行时切换实现 时。
创作不易,不妨点赞、收藏、关注支持一下,各位的支持就是我创作的最大动力❤️