• 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 接口来调用不同的实现对象,从而实现了抽象与实现的解耦

    // 抽象部分
    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
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
  • 相关阅读:
    JWT 详解,当前主流java token 框架之一
    MogaFX—乐观的通胀报告意味着美元刚刚经历了15年来最糟糕的一天
    振弦采集模块的通讯协议
    一文搞懂临床预测模型的评价
    物联网浏览器(IoTBrowser)-Modbus协议集成和测试
    栈和队列题目练习
    JVM常见参数总结
    146616-66-2,胺反应性染料BDP FL NHS Ester,聚乙二醇单烯丙基醚
    node.js---内置API之fs文件系统模块——fs.readFile()方法:读取指定文件中的内容
    电脑系统重装后怎么用打印机扫描出文件?
  • 原文地址:https://blog.csdn.net/csy08845/article/details/138159647