设计模式 - 桥接模式
封面图
•
2025-11-07
•
设计模式
4
0
0
0
桥接模式(Bridge Pattern)是一种**结构型设计模式**,用于将抽象部分与其实现部分分离,使它们可以独立变化。 --- ## 🧩 一、桥接模式的定义 > **桥接模式**:将抽象部分(Abstraction)与它的实现部分(Implementation)分离,使它们可以独立变化。 --- ## 🧱 二、桥接模式的组成 桥接模式包含以下几个核心角色: 1. **Abstraction(抽象类)** 定义了对实现的引用,并通过这个引用来调用实现部分的操作。它通常包含一个指向 `Implementor` 的引用。 2. **RefinedAbstraction(扩充抽象类)** 对 Abstraction 的扩展,可能添加更多方法或修改原有方法的行为。 3. **Implementor(实现接口)** 定义实现部分的接口,是所有具体实现类的公共接口。 4. **ConcreteImplementor(具体实现类)** 实现 Implementor 接口的具体类,提供具体的实现逻辑。 --- ## 📌 三、桥接模式的使用场景 - 当需要将一个类的**抽象部分**和**实现部分**解耦,使其可以独立变化时。 - 当系统中存在多个维度的变化,比如“产品类型”和“产品实现方式”的组合变化。 - 当类的继承层次过于复杂时,可以通过桥接模式简化结构。 --- ## 🎯 四、桥接模式的优点 - **解耦**:抽象部分和实现部分相互独立,可以独立扩展。 - **提高可维护性**:当实现部分发生变化时,不需要修改抽象部分。 - **避免类爆炸**:减少因多维度变化导致的类数量激增。 --- ## ❌ 四、桥接模式的缺点 - 增加系统的复杂度,需要正确识别出两个独立变化的维度。 - 对于简单问题,可能显得过度设计。 --- ## 🧩 五、桥接模式示例(Java) ### 示例场景:不同品牌手机在不同操作系统上的操作 #### 1. 定义实现接口(Implementor) ```java interface OS { void run(); } ``` #### 2. 具体实现类(ConcreteImplementor) ```java class Android implements OS { public void run() { System.out.println("Running on Android"); } } class iOS implements OS { public void run() { System.out.println("Running on iOS"); } } ``` #### 3. 抽象类(Abstraction) ```java abstract class Phone { protected OS os; public Phone(OS os) { this.os = os; } abstract void run(); } ``` #### 4. 扩充抽象类(RefinedAbstraction) ```java class SmartPhone extends Phone { public SmartPhone(OS os) { super(os); } @Override void run() { System.out.print("SmartPhone: "); os.run(); } } class FeaturePhone extends Phone { public FeaturePhone(OS os) { super(os); } @Override void run() { System.out.print("FeaturePhone: "); os.run(); } } ``` #### 5. 使用示例 ```java public class BridgePatternDemo { public static void main(String[] args) { Phone phone1 = new SmartPhone(new Android()); phone1.run(); // SmartPhone: Running on Android Phone phone2 = new FeaturePhone(new iOS()); phone2.run(); // FeaturePhone: Running on iOS } } ``` --- ## 🔄 六、总结 | 特点 | 内容 | |------|------| | 类型 | 结构型设计模式 | | 核心思想 | 将抽象和实现分离,独立变化 | | 适用场景 | 多维度变化、类层次复杂 | | 优点 | 解耦、灵活、易维护 | | 缺点 | 增加复杂度 | --- 如果你有具体的业务场景,我可以帮你分析是否适合使用桥接模式。
上一篇:
设计模式 - 适配器模式
标题录入,一次不能超过6条
留言
评论