设计模式之桥接模式

概念:将抽象和实现解耦,使得两者可以独立地变化。

  • 抽象角色,定义要实现的操作。
  • 修正的抽象角色,继承抽象角色。
  • 接口或抽象类Implementor,定义要实现的操作。
  • 具体的操作类。

以一个生产手机的例子来帮助大家理解。

java 复制代码
// 实现部分:内存模块接口
interface MemoryModule {
    int getMemoryCapacity(); // 获取内存容量
    void performMemoryOperation(); // 示例方法,执行特定内存操作
}
// 具体实现:华为内存模块
class HuaweiMemory implements MemoryModule {
    private final int memoryCapacity;
    public HuaweiMemory(int capacity) {
        this.memoryCapacity = capacity;
    }
    @Override
    public int getMemoryCapacity() {
        return memoryCapacity;
    }
    @Override
    public void performMemoryOperation() {
        System.out.println("Performing a Huawei-specific memory operation.");
    }
}
// 具体实现:小米内存模块
class XiaomiMemory implements MemoryModule {
    private final int memoryCapacity;
    public XiaomiMemory(int capacity) {
        this.memoryCapacity = capacity;
    }
    @Override
    public int getMemoryCapacity() {
        return memoryCapacity;
    }
    @Override
    public void performMemoryOperation() {
        System.out.println("Performing a Xiaomi-specific memory operation.");
    }
}
// 抽象部分:手机基类
abstract class Phone {
    protected MemoryModule memoryModule;
    public Phone(MemoryModule memoryModule) {
        this.memoryModule = memoryModule;
    }
    public abstract String getModelName(); // 获取手机型号
    public int getMemoryCapacity() {
        return memoryModule.getMemoryCapacity();
    }
    public void performMemoryOperation() {
        memoryModule.performMemoryOperation();
    }
}
// 具体抽象:华为手机
class HuaweiPhone extends Phone {
    public HuaweiPhone(MemoryModule memoryModule) {
        super(memoryModule);
    }
    @Override
    public String getModelName() {
        return "Huawei P50 Pro";
    }
}
// 具体抽象:小米手机
class XiaomiPhone extends Phone {
    public XiaomiPhone(MemoryModule memoryModule) {
        super(memoryModule);
    }
    @Override
    public String getModelName() {
        return "Xiaomi Mi 11";
    }
}
// 客户端代码
public class BridgePatternDemo {
    public static void main(String[] args) {
        // 创建内存模块实例
        MemoryModule huawei6GB = new HuaweiMemory(6);
        MemoryModule huawei8GB = new HuaweiMemory(8);
        MemoryModule xiaomi6GB = new XiaomiMemory(6);
        MemoryModule xiaomi8GB = new XiaomiMemory(8);
        // 创建不同内存配置的手机实例
        Phone huaweiPhone6GB = new HuaweiPhone(huawei6GB);
        Phone huaweiPhone8GB = new HuaweiPhone(huawei8GB);
        Phone xiaomiPhone6GB = new XiaomiPhone(xiaomi6GB);
        Phone xiaomiPhone8GB = new XiaomiPhone(xiaomi8GB);
        // 输出手机型号及内存信息
        System.out.printf("Phone: %s, Memory: %d GB%n", huaweiPhone6GB.getModelName(), huaweiPhone6GB.getMemoryCapacity());
        System.out.printf("Phone: %s, Memory: %d GB%n", huaweiPhone8GB.getModelName(), huaweiPhone8GB.getMemoryCapacity());
        System.out.printf("Phone: %s, Memory: %d GB%n", xiaomiPhone6GB.getModelName(), xiaomiPhone6GB.getMemoryCapacity());
        System.out.printf("Phone: %s, Memory: %d GB%n", xiaomiPhone8GB.getModelName(), xiaomiPhone8GB.getMemoryCapacity());
        // 执行内存操作
        huaweiPhone6GB.performMemoryOperation();
        huaweiPhone8GB.performMemoryOperation();
        xiaomiPhone6GB.performMemoryOperation();
        xiaomiPhone8GB.performMemoryOperation();
    }
}

如果大家需要视频版本的讲解,欢迎关注我的B站:

十一、设计模式之桥接模式讲解

相关推荐
workflower15 小时前
例二:某汽车制造企业深度融合AI智能体,构建园区网络的智能运维体系
人工智能·机器学习·设计模式·机器人·云计算·汽车·制造
ly768916 小时前
Java 设计模式详解:从原则到 23 种经典模式
java·开发语言·设计模式
AI人工智能+电脑小能手19 小时前
大白话说Java设计模式-14-适配器模式(业务实战篇)
java·设计模式·适配器模式·系统兼容·多渠道对接
略略略咯咯1 天前
(总结)设计模式
设计模式
Cosolar2 天前
DeepSeek Harness 理解 Harness 的设计哲学 - 可组合的插件运行时
人工智能·设计模式·架构
Nebula_g2 天前
JavaSE基础语法:特殊类(特殊情景下的设计模式)
java·开发语言·设计模式
George_Ye2 天前
同一本书,一人一份:我如何设计 AI 个性化扫书报告
设计模式
莫得感情 o3 天前
设计模式 22 · 三个冷门模式:中介者、访问者、解释器
java·设计模式
AI人工智能+电脑小能手4 天前
大白话说Java设计模式-08-建造者模式(业务实战篇)
java·设计模式·建造者模式·架构设计·对象构建
AustinXu4 天前
从 Claude Code 到 Claude Tag,Harness Engineering 走到了组织这一层
设计模式·团队管理