Java23种设计模式-结构型模式之桥接模式

桥接模式(Bridge Pattern):将抽象部分与它的实现部分分离,使它们都可以独立地变化

通常以下角色:

角色1.抽象类(Abstraction):定义抽象接口。

角色2.扩展抽象类(Refined Abstraction):扩展抽象类,添加具体的功能。

角色3.实现类(Implementor):定义实现接口。

角色4.具体实现类(Concrete Implementor):实现实现类的具体方法。

优点包括:
抽象和实现的分离:使得抽象部分和实现部分可以独立地进行扩展和修改。
更好的可扩展性:可以方便地添加新的抽象类和实现类。
灵活组合:可以根据具体需求组合不同的抽象和实现。
提高复用性:抽象部分和实现部分都可以被复用。

缺点包括:
增加系统复杂性:引入了额外的类和对象,可能会增加系统的复杂性。
理解难度增加:对于不熟悉该模式的开发者来说,理解和使用可能会有一定难度。
开发成本增加:在设计和实现过程中需要花费更多的时间和精力。
代码可读性降低:过多的类和对象可能会降低代码的可读性。
维护成本增加:当系统规模增大时,维护成本也会相应增加。

应用场景

1.图形系统 :可以将图形的表现形式和绘制方式分离,以便更灵活地扩展和组合。

2.软件配置 :将配置的不同部分(如界面显示和数据处理)分离。

3.媒体播放器 :将媒体的不同格式和播放方式进行分离。

4.数据库访问 :把数据库操作和具体的数据库类型进行分离。

5.操作系统API :使操作系统的不同功能和具体实现分开。

6.文件格式处理 :把文件的逻辑和物理存储方式分开。

7.游戏开发 :例如,将游戏角色的行为和具体的动画效果分离。

8.电子设备驱动 :将设备的通用功能和特定硬件的实现分开。

通过使用桥接模式,可以提高系统的灵活性、可扩展性和可维护性,使系统更易于扩展和修改。

示例:Abstraction 是抽象部分,它定义了一个 performOperation 方法。ImplementationA 和 ImplementationB 是实现部分,它们分别实现了 Abstraction 的 performOperation 方法。Demo可以通过 Abstraction 接口来调用不同的实现对象,从而实现了抽象与实现的解耦

java 复制代码
// 抽象部分
interface Abstraction {
    void perfprmOperation();
}
// 实现部分
public class ImpleMenttationA implements Abstraction{
    @Override
    public void perfprmOperation() {
        System.out.println("Performing Operation A");
    }
}
// 实现部分
public class ImpleMenttationB implements Abstraction{
    @Override
    public void perfprmOperation() {
        System.out.println("Performing Operation B");
    }
}
//Demo
public class BridgePatternDemo {
    public static void main(String[] args) {
        Abstraction abstractionA = new ImpleMenttationA();
        abstractionA.perfprmOperation(); // 输出: Performing Operation A

        Abstraction abstractionB = new ImpleMenttationA();
        abstractionB.perfprmOperation(); // 输出: Performing Operation B
    }

}
相关推荐
Yu_Lijing16 小时前
基于C++的《Head First设计模式》笔记——备忘录模式
c++·笔记·设计模式·备忘录模式
无籽西瓜a18 小时前
【西瓜带你学设计模式 | 第二期-观察者模式】观察者模式——推模型与拉模型实现、优缺点与适用场景
java·后端·观察者模式·设计模式
我真会写代码21 小时前
Java程序员常用设计模式详解(实战版)
java·开发语言·设计模式
无籽西瓜a1 天前
【西瓜带你学设计模式 | 第一期-单例模式】单例模式——定义、实现方式、优缺点与适用场景以及注意事项
java·后端·单例模式·设计模式
cliffordl1 天前
设计模式(python)
python·设计模式
云道轩1 天前
告诉 Claude Code 在项目中遵循特定的编程模式/设计模式和技术栈约束
设计模式·ai·agent·claude code
花间相见2 天前
【Java基础面试题】—— 核心知识点面试题(含答案):语法+集合+JVM+设计模式+算法
java·jvm·设计模式
朱一头zcy2 天前
设计模式入门:最简单的模板方法模式
笔记·设计模式·模板方法模式
君主黑暗2 天前
设计模式-观察者模式
观察者模式·设计模式
砍光二叉树2 天前
【设计模式】结构型-组合模式
设计模式·组合模式