大话设计模式——11.桥接模式(Bridge Pattern)

简介

将抽象部分与它的实现部分分离,使它们可以独立变化。

UML图:

应用场景:

  1. 系统需要在构建的抽象化角色和具体化角色之间增加更多的灵活性
  2. 不想使用继承导致系统类的个数急剧增加
  3. 某个类存在多个变化维度使用继承方式容易出现类的膨胀
示例

手机厂商和软件厂商

  1. 实现类:软件
java 复制代码
public interface Software {

    /**
     * 运行
     */
    void run();
}

1.1 具体实现类:

java 复制代码
public class MusicSoftware implements Software{
    @Override
    public void run() {
        System.out.println("运行 音乐软件");
    }
}
java 复制代码
public class GameSoftware implements Software {

    @Override
    public void run() {
        System.out.println("运行 游戏软件");
    }
}
  1. 抽象类:手机
java 复制代码
public abstract class Phone {


    protected Software software;

    public Phone(Software software) {
        this.software = software;
    }

    /**
     * 使用
     */
    public abstract void use();

}

2.1 实现类:

java 复制代码
public class AndroidPhone extends Phone {

    public AndroidPhone(Software software) {
        super(software);
    }

    @Override
    public void use() {
        System.out.println("安卓手机....");
        software.run();
    }
}
java 复制代码
public class IOSIphone extends Phone {


    public IOSIphone(Software software) {
        super(software);
    }

    @Override
    public void use(){
        System.out.println("苹果手机....");
        software.run();

    }
}
  1. 运行
java 复制代码
public class Main {

    public static void main(String[] args) {
        Software musicSoftware = new MusicSoftware();
        Software gameSoftware = new GameSoftware();
        new AndroidPhone(musicSoftware).use();
        new IOSIphone(musicSoftware).use();
        new AndroidPhone(gameSoftware).use();
        new IOSIphone(gameSoftware).use();
    }
}
总结
  • 优点
    • 实现抽象和实现的分离,提高系统灵活性
    • 具备良好的扩展性,符合开闭原则
  • 缺点
    • 增加系统的理解和设计难度
VS 适配器模式
  • 适用阶段不同
    • 桥接模式用于设计的前期,精细化的设计,让系统更加灵活
    • 适配器模式用于设计完成之后,发现类、接口之间无法一同工作,需要进行填坑
  • 应用场景
    • 适配器模式经常用于在第三方API协同工作的场合
相关推荐
2501_946244786 分钟前
Flutter & OpenHarmony OA系统图片预览组件开发指南
android·javascript·flutter
西幻凌云7 分钟前
认识设计模式——工厂模式
c++·设计模式·简单工厂模式·抽象工厂模式·工厂模式
极客小云11 分钟前
【IEEE Transactions系列期刊全览:计算机领域核心期刊深度解析】
android·论文阅读·python
wanghowie25 分钟前
02.01 Spring Boot|自动配置机制深度解析
android·spring boot·后端
一起搞IT吧30 分钟前
三方相机问题分析十一:【手电筒回调异常】手电筒打开3档时,达到档位控制温度,手电筒二级界面中档位为0
android·图像处理·数码相机
2501_9240641140 分钟前
2025年移动应用渗透测试流程方案及iOS安卓测试方法对比
android·ios
崎岖Qiu43 分钟前
【设计模式笔记24】:JDK源码分析-Comparator中的「策略模式」
java·笔记·设计模式·jdk·策略模式
千里马学框架1 小时前
安卓14-16车机手机仿小米su7三分屏实战项目专题
android·智能手机·framework·分屏·车载·小米汽车·三分屏
崎岖Qiu1 小时前
【设计模式笔记23】:长文解析-深刻理解「装饰器模式」
java·笔记·设计模式·装饰器模式
走在路上的菜鸟1 小时前
Android学Flutter学习笔记 第二节 Android视角认知Flutter(resource,生命周期,layout)
android·学习·flutter