桥接模式概述

桥接模式(Bridge Pattern)详解

1. 核心定义与思想

桥接模式是一种结构型设计模式,其核心思想是将抽象部分实现部分解耦,使两者可以独立变化。

  • 抽象部分:定义系统的行为或属性(如“形状”)。
  • 实现部分:提供具体实现(如“颜色”的具体填充方式)。
  • 关键目标:通过组合(而非继承)建立关系,避免类爆炸,提高扩展性。
2. 结构组成

桥接模式包含四个核心角色:

  1. 抽象类(Abstraction)
    定义高层接口,持有对实现类(Implementor)的引用。

    abstract class Shape {
        protected Color color;
        public Shape(Color color) { this.color = color; }
        public abstract void draw();
    }
  2. 具体抽象类(RefinedAbstraction)
    继承抽象类,调用实现类的方法。

    class Circle extends Shape {
        public Circle(Color color) { super(color); }
        @Override
        public void draw() {
            System.out.println("画一个" + color.getColor() + "的圆");
        }
    }
  3. 实现类接口(Implementor)
    声明具体实现方法。

    interface Color {
        String getColor();
    }
  4. 具体实现类(ConcreteImplementor)
    提供接口的具体实现。

    
    

    class Red implements Color {
        @Override
        public String getColor() { return "红色"; }
    }
3. 使用场景
  • 多维度扩展:如消息系统需支持多种通知方式(邮件、短信)和紧急程度(普通、紧急)。
  • 避免类爆炸:替代多层继承,减少子类数量。例如,图形系统中形状与颜色的组合若用继承会产生 红色圆形蓝色方形 等大量子类。
  • 动态切换实现:运行时灵活组合抽象与实现,如数据库连接池支持多种驱动(JDBC、Hibernate)。
4. 优缺点

优点缺点
分离抽象与实现,符合开闭原则增加系统复杂度,需定义多个接口和类
独立扩展抽象与实现,提高灵活性需准确识别独立变化的维度
通过组合复用实现类,减少冗余过度设计可能增加维护成本
5. 代码示例

场景:图形系统中,形状(抽象)与颜色(实现)独立变化。


// 实现类接口
interface Color {
    String getColor();
}

// 具体实现类
class Red implements Color {
    public String getColor() { return "红色"; }
}

class Blue implements Color {
    public String getColor() { return "蓝色"; }
}

// 抽象类
abstract class Shape {
    protected Color color;
    public Shape(Color color) { this.color = color; }
    public abstract void draw();
}

// 具体抽象类
class Circle extends Shape {
    public Circle(Color color) { super(color); }
    @Override
    public void draw() {
        System.out.println("画一个" + color.getColor() + "的圆");
    }
}

// 客户端调用
public class Demo {
    public static void main(String[] args) {
        Color red = new Red();
        Color blue = new Blue();
        
        Shape circle = new Circle(red);
        circle.draw(); // 输出:画一个红色的圆
        
        circle = new Circle(blue);
        circle.draw(); // 输出:画一个蓝色的圆
    }
}
6. 与其他模式对比

模式核心目的关系
策略模式封装算法,支持动态替换类似结构,但目的不同
适配器模式解决接口不兼容,使类协同工作功能互补,可组合使用
模板方法模式定义算法骨架,子类实现细节桥接模式更关注多维度解耦
7. 总结

桥接模式通过组合代替继承,将抽象与实现解耦,适用于需多维度独立扩展的场景。其优势在于提高系统的灵活性和扩展性,但需权衡增加的复杂度。实际应用中,常见于图形库、数据库驱动、消息系统等需要分离抽象与实现的场景。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值