设计模式--桥接模式【结构型模式】

设计模式的分类

我们都知道有 23 种设计模式,这 23 种设计模式可分为如下三类:

  • 创建型模式(5 种):单例模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式。
  • 结构型模式(7 种):适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
  • 行为型模式(11 种):策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

在这里插入图片描述

设计模式系列文章传送门

设计模式的 7 大原则

设计模式–单例模式【创建型模式】

设计模式–工厂方法模式【创建型模式】

设计模式–抽象工厂模式【创建型模式】

设计模式–建造者模式【创建型模式】

设计模式–原型模式【创建型模式】

设计模式–适配器模式【结构型模式】

设计模式–装饰器模式【结构型模式】

设计模式–代理模式【结构型模式】

设计模式–外观模式(门面模式)【结构型模式】

什么是桥接模式

桥接模式就是将抽象部分和具体实现部分分离,是它们可以独立变化,又称为接口模式和柄体模式。

桥接模式的组成

  • 抽象部分:定义了抽象类,并持有对实现部分接口的引用,通过构造函数传入一个实现对象。
  • 具体抽象:继承抽象部分,实现其中定义的抽象方法,并通过组合关系调用实现部分的业务方法。
  • 实现部分:定义具体实现的接口,供具体抽象来调用。
  • 具体实现:实现实现部分接口,并实现其中的具体业务逻辑。

桥接模式案例演示

我们以手机充电线为例,同一根数据充电线既可以给小米手机充电,也可以给魅族手机充电,不同品牌的手机可以作为抽象部分,手机充电线可以作为具体实现部分。

ChargeLine(实现部分)

ChargeLine 定义了具体的充电线接口,定义了一个充电方法,代码如下:

public interface ChargeLine {

    //充电
    void charging();

}

ChargeLineImpl(具体实现)

ChargeLineImpl 实现了 ChargeLine 接口,实现了具体的充电方法,代码如下:

public class ChargeLineImpl implements ChargeLine {

    @Override
    public void charging() {
        System.out.println("手机开始充电");
    }
}

MobilePhone(抽象部分)

MobilePhone 定义了抽象类,并持有一个充电线接口 ChargeLine,并提供了一个具体的充电方法,代码如下:

public abstract class MobilePhone {

    //实现部分
    private ChargeLine chargeLine;

    public MobilePhone(ChargeLine chargeLine) {
        this.chargeLine = chargeLine;
    }

    //手机充电方法
   public void mobilePhoneCharging(){
       chargeLine.charging();
   }


}

XiaoMiMobilePhone(具体抽象)

XiaoMiMobilePhone 继承了抽象类 MobilePhone,并调用了 MobilePhone 类的充电方法,代码如下:

public class XiaoMiMobilePhone extends MobilePhone{

    public XiaoMiMobilePhone(ChargeLine chargeLine) {
        super(chargeLine);
    }

    @Override
    public void mobilePhoneCharging() {
        super.mobilePhoneCharging();
    }

}

ClientBridge(客户端)

在这里插入代码片

ChargeLine(实现部分)

ClientBridge 客户端完成了桥接模式调用,我们使用具体抽象对象 XiaoMiMobilePhone 传入一个实现部分对象 ChargeLineImpl 完成了桥接模式的调用, MobilePhone,并调用了 MobilePhone 类的充电方法,代码如下:

public class ClientBridge {

    public static void main(String[] args) {
        //手机充电线是具体实现部分
        ChargeLineImpl chargeLine = new ChargeLineImpl();
        //抽象的小米手机
        XiaoMiMobilePhone xiaoMiMobilePhone = new XiaoMiMobilePhone(chargeLine);
        //充电
        xiaoMiMobilePhone.mobilePhoneCharging();
    }

}

执行结果如下:

手机开始充电

桥接模式的优缺点

优点:

  • 分离了抽象部分和具体实现部分,使得各自可以独立变化。
  • 提升了系统的灵活性和扩展性。

缺点:

  • 需要定义抽象和实现部分,提升了系统的复杂度。
  • 桥接模式的使用对开发人员的设计能力有一定的要求,对团队来说是个挑战。

总结:本篇简单分享了桥接模式的使用,桥接模式的理解还是有一定的难度的,我使用了充电线的案例演示了桥接模式的实现,希望可以帮助不熟悉桥接模式的朋友。

如有不正确的地方欢迎各位指出纠正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值