桥接设计模式
🚩什么是桥接设计模式?
桥接模式(Bridge Pattern) 是 结构型设计模式 ,它将 抽象部分 与 实现部分 分离,使它们可以 独立变化 。桥接模式通过 组合 而不是继承来实现抽象与实现的解耦。
使用场景
-
当需要 避免抽象与实现之间的永久绑定 时。
-
当 抽象部分 和 实现部分 都需要 独立扩展 时。
-
当需要 在运行时切换实现 时。
🚩桥接设计模式的特点
-
分离抽象与实现:桥接模式将抽象部分与实现部分分离,使它们可以独立变化。
-
灵活性:抽象部分和实现部分可以独立扩展,互不影响。
-
可扩展性:新增抽象或实现时,无需修改现有代码。
-
解耦:通过组合关系替代继承关系,降低系统的耦合度。
🚩桥接设计模式的结构
桥接模式主要包含以下部分:
-
Abstraction(抽象部分):定义抽象接口,并维护一个对 实现部分 的引用。
-
RefinedAbstraction(扩展抽象部分):对抽象部分进行扩展,提供更多的功能。
-
Implementor(实现部分接口):定义实现部分的接口,供抽象部分调用。
-
ConcreteImplementor(具体实现部分):实现 Implementor 接口,提供具体的实现。
🚩桥接设计模式的优缺点
✅ 优点
-
分离抽象与实现:抽象部分和实现部分可以独立变化,互不影响。
-
灵活性:可以在运行时动态切换实现。
-
可扩展性:新增抽象或实现时,无需修改现有代码。
-
解耦:通过组合关系替代继承关系,降低系统的耦合度。
❌ 缺点
-
增加复杂性:桥接模式引入了更多的类和对象,增加了系统的复杂性。
-
设计难度:需要正确识别抽象部分和实现部分,设计难度较高。
🚩桥接设计模式的Java实现
代码地址:GitHub
- 首先创建
实现部分接口Color
,定义方法OperationImp()
。
java
/**
* @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
的引用。
java
/**
* @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()
方法,调用实现部分
的方法。
java
/**
* @author hanson.huang
* @version V1.0
* @ClassName ProductA
* @Description 扩展抽象部分 ProductA
* @date 2025/3/24 10:48
**/
public class ProductA extends Product {
@Override
public void Operation() {
color.OperationImp(this.getName());
}
}
-
创建
具体实现部分 Red 和 Blue
,分别实现OperationImp()
方法。- Red
java/** * @author hanson.huang * @version V1.0 * @ClassName Red * @Description 具体实现部分 Red * @date 2025/3/24 10:49 **/ public class Red implements Color { @Override public void OperationImp(String name) { System.out.println(name + ":红色"); } }
- Blue
java/** * @author hanson.huang * @version V1.0 * @ClassName Blue * @Description 具体实现部分 Blue * @date 2025/3/24 10:49 **/ public class Blue implements Color { @Override public void OperationImp(String name) { System.out.println(name + ":蓝色"); } }
-
测试桥接模式
java
/**
* @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 实现 需要 定义抽象部分 、实现部分接口 以及 具体实现部分,并通过组合关系将两者连接起来。
✅ 适用场景:
-
需要 避免抽象与实现之间的永久绑定 时。
-
需要 独立扩展抽象与实现 时。
-
需要 在运行时切换实现 时。
创作不易,不妨点赞、收藏、关注支持一下,各位的支持就是我创作的最大动力❤️
