七、桥接模式

  • 目的 : 将抽象部分与其实现部分分离,使它们都可以独立地变化。
  • 核心 : 使用组合代替继承,抽象类包含一个实现接口的引用,将具体实现委托给该引用。
  • 场景 : 跨平台 UI 开发、数据库驱动、设备控制等。

首先是手机壳接口 - 实现部分接口

java 复制代码
package bridge;

/*
  定义手机壳的基本操作,不同的手机壳类型将实现此接口
 */
public interface ICellphoneShell {
    /**
     * 安装手机壳的方法
     * 具体的安装逻辑由实现类完成
     */
    void attachShell();
}

然后是 iPhone6 手机壳实现类 - 具体的实现部分

java 复制代码
package bridge;

/*
 实现了 ICellphoneShell 接口,提供 iPhone6 手机壳的具体安装逻辑
 */
public class IPhone6Shell implements ICellphoneShell {
    @Override
    public void attachShell() {
        System.out.println("安装 iPhone6 手机壳");
        // 这里可以添加 iPhone6 手机壳特有的安装逻辑
    }
}

接着核心来了。抽象手机类 - 抽象部分

java 复制代码
package bridge;

//通过组合功能,实现抽象部分与实现部分的桥接。(这个组合并不是UML中的组合关系)
public abstract class BaseCellphone {

    protected ICellphoneShell shell;		// 桥接的关键:对象组合,通过持有手机壳接口的引用来组合功能

    // 注入手机壳实现
    public BaseCellphone(ICellphoneShell shell) {
        this.shell = shell; 
    }

    /*
     抽象组装方法
     由具体子类实现完整的手机组装流程
     */
    public abstract void assemble();
}

iPhone 手机类 - 扩展的抽象部分

java 复制代码
package bridge;

// 继承自 BaseCellphone,实现具体的 iPhone 手机组装逻辑

public class IPhone extends BaseCellphone {

    //将 shell(手机壳对象)传递给父类进行初始化,这样就将 iPhone 手机与具体的手机壳实现桥接在一起
    public IPhone(ICellphoneShell shell) {
        super(shell);
    }

    /*
     实现 iPhone 手机的组装过程
     组合了手机本身的组装逻辑和手机壳的安装逻辑
     */
    @Override
    public void assemble() {
        System.out.println("组装 iPhone 手机"); // 手机本身的组装逻辑
        shell.attachShell(); // 手机壳的安装逻辑
        // 这里可以添加其他 iPhone 特有的组装步骤
    }
}

最后看主函数入口

java 复制代码
package bridge;

public class MainTest {
    public static void main(String[] args) {
        // 使用桥接模式:将 iPhone 手机与 iPhone6 手机壳进行组合
        // 抽象部分(手机)和实现部分(手机壳)可以独立变化
        BaseCellphone iPhone = new IPhone(new IPhone6Shell());
        iPhone.assemble(); // 执行组装过程
    }
}
相关推荐
wuxuanok7 天前
VMware 桥接模式 - 【复制物理网络连接状态】选项详解 及不开启时的手动配置
桥接模式
wuxuanok8 天前
VMware NAT模式 桥接模式
桥接模式
洛洛呀。9 天前
Kali系统桥接模式下相关网络故障
linux·服务器·桥接模式
ximu_polaris9 天前
设计模式(C++)-结构型模式-桥接模式
c++·设计模式·桥接模式
geovindu12 天前
go: Bridge Pattern
开发语言·设计模式·golang·软件构建·桥接模式
Tockm13 天前
vm网络配置桥接模式
网络·智能路由器·桥接模式
Rsun0455115 天前
10、Java 桥接模式从入门到实战
java·开发语言·桥接模式
我爱cope17 天前
【从0开始学设计模式-8| 桥接模式】
java·设计模式·桥接模式
芯智工坊25 天前
第10章 Mosquitto桥接模式
网络·数据库·人工智能·mqtt·开源·桥接模式