23种设计模式之桥接模式

14 篇文章 0 订阅
9 篇文章 0 订阅
本文通过一个车企生产汽车的例子,介绍了桥接模式的应用,展示了如何通过组合而非继承来分离抽象与实现,实现开闭原则。代码示例中创建了不同颜色和类型的汽车,如黄色吉普车和红色SUV,体现出桥接模式的灵活性和扩展性。
摘要由CSDN通过智能技术生成

桥接模式

桥接(Bridge)模式的定义如下:将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。
举个栗子。
车企生产汽车,有不同类型以及不同颜色,例如生产suv,吉普车,轿车,颜色以红色与黄色举例。
遵循了里氏替换原则和依赖倒置原则,最终实现了开闭原则,对修改关闭,对扩展开放。
桥接(Bridge)模式的优点是:

  • 抽象与实现分离,扩展能力强
  • 符合开闭原则
  • 符合合成复用原则
  • 其实现细节对客户透明
    所以在学习设计模式的时候发现与设计原则在很大程度上有共通点。
    代码如下:
public class BridgeTest {
    public static void main(String[] args) {
        // 新建黄色的吉普车
        JeepCar jeepCar = new JeepCar();
        jeepCar.setCar(new Yellow());
        System.out.println(jeepCar.getName());


        // 新建红色的吉普车
        SuvCar suvCar = new SuvCar();
        suvCar.setCar(new RedColor());
        System.out.println(suvCar.getName());
    }
}

interface Color {
    String getColor();
}


interface Car {
    void setCar(Color color);

    String getName();
}

class SuvCar implements Car {
    private Color color;

    @Override
    public void setCar(Color color) {
        this.color = color;
    }

    @Override
    public String getName() {
        return "这是" + color.getColor() + "的" + "suv";
    }
}


class JeepCar implements Car {

    private Color color;

    @Override
    public void setCar(Color color) {
        this.color = color;
    }

    @Override
    public String getName() {
        return "这是" + color.getColor() + "的" + "吉普车";
    }
}


class RedColor implements Color {

    @Override
    public String getColor() {
        return "红色";
    }
}

class Yellow implements Color {

    @Override
    public String getColor() {
        return "黄色";
    }
}

在这里插入图片描述
参考资料:
1.http://c.biancheng.net/view/1364.html
代码地址:https://gitee.com/zhoujie1/design-mode-and-principle.git

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值