尚硅谷设计模式学习(8)---[桥接模式(Bridge)]

本文介绍了设计模式中的桥接模式,通过手机种类和品牌的例子展示了如何使用桥接模式实现抽象与实现的分离,以达到更好的扩展性和灵活性。在案例中,手机品牌如华为和小米作为实现接口,而手机种类如折叠式和滑盖式作为抽象类的实现,通过组合实现不同品牌和类型的手机。此外,还探讨了桥接模式在JDBC加载驱动中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

🚀🚀🚀尚硅谷传送门==>B站尚硅谷Java设计模式

❤❤❤感谢尚硅谷❤❤❤

👀 最近开始计划学习一下设计模式了,加油!!!



📢情景引入

现在市面上有各种各样的手机,种类不同,品牌也不同.

在这里插入图片描述

传统思路分析

在这里插入图片描述

如果说要扩展增加新的品牌手机,就需要为对应的种类手机下增加类;
或者扩展增加手机种类时,还要添加手机的品牌.

⚡桥接模式

桥接模式(Bridge)是指:将实现与抽象放在两个不同的类层次中

基于类的最小设计原则,通过使用封装、聚合及继承等行为让不同的类承担不同的职责。它的主要特点是把抽象(Abstraction)与行为实现(Implementation)分离开来,从而可以保持各部分的独立性以及应对各自的功能进行扩展.

Client类:模拟客户端

抽象类(Abstraction) :充当桥接类,聚合 Implementor 接口(此时就是调用与被调用的关系);
维护了 Implementor 接口 ; 以及Implementor的实现类ConcreteImplementorA,ConcreteImplementorC

Implementor 接口 行为实现类接口.

RefindedAbstraction 作为抽象类(Abstraction) 的具体实现类;

在这里插入图片描述

对于那些不希望使用继承或因为多层次继承导致系统类的个数急剧增加的系统,桥接模式尤为适用.


接着回到这个手机的问题案例

在这里插入图片描述

手机品牌接口Brade

//手机品牌;
public interface Brade {
    //开机
    void open();
    //打电话;
    void call();
    //关机;
    void close();
}

手机品牌

//华为手机
public class HuaWei implements Brade{

    @Override
    public void open() {
        System.out.println("华为手机开机");
    }

    @Override
    public void call() {
        System.out.println("华为手机通话");
    }

    @Override
    public void close() {
        System.out.println("华为手机关机");
    }
}
//小米手机
public class XiaoMi implements Brade{
    @Override
    public void open() {
        System.out.println("小米手机开机");
    }

    @Override
    public void call() {
        System.out.println("小米手机通话");
    }

    @Override
    public void close() {
        System.out.println("小米手机关机");
    }
}

手机抽象种类AbstractPhone

//抽象类 手机
public abstract class AbstractPhone {
    //聚合手机品牌;
    private Brade brade;

    public AbstractPhone(Brade brade) {
        super();
        this.brade = brade;
    }

    //调用品牌的方法;
    protected void open(){
        this.brade.open();
    }

    protected void call(){
        this.brade.call();
    }

    protected void close(){
        this.brade.close();
    }
}

折叠式Folded

//折叠类手机
public class Folded extends AbstractPhone{
    public Folded(Brade brade) {
        super(brade);
    }

    public void open(){
        System.out.println("折叠手机");
        super.open();
    }

    public void call(){
        System.out.println("折叠手机");
        super.call();
    }

    public void  close(){
        System.out.println("折叠手机");
        super.close();
    }
}

滑盖式Silde

//滑盖类手机
public class Silde extends AbstractPhone{
    public Silde(Brade brade) {
        super(brade);
    }

    public void open(){
        System.out.println("滑盖手机");
        super.open();
    }

    public void call(){
        System.out.println("滑盖手机");
        super.call();
    }

    public void  close(){
        System.out.println("滑盖手机");
        super.close();
    }
}

模拟客户端Client

//模拟客户端
public class Client {
    public static void main(String[] args) {

        //选择折叠式华为手机操作
        AbstractPhone abstractPhone=new Folded(new HuaWei());
        abstractPhone.open();
        abstractPhone.call();

        System.out.println("<------------------------------->");

        //使用滑盖式小米手机操作;
        AbstractPhone abstractPhone1=new Folded(new XiaoMi());
        abstractPhone1.call();
        abstractPhone1.close();

    }
}

测试执行

折叠手机
华为手机开机
折叠手机
华为手机通话
<------------------------------->
折叠手机
小米手机通话
折叠手机
小米手机关机

桥接模式在JDBC中的应用

比如说加载驱动时

Class.forName("com.mysql.cj.jdbc.Driver");

进入Driver类;可注意到它实际上调用的是DriverManager的静态注册驱动方法

DriverManager.registerDriver(new Driver());

在这里插入图片描述

进入DriverManager类,其中有建立连接的getConnection 方法;该方法返回值类型为 Connection 接口

在这里插入图片描述

Connection 接口的底部关系接口.

在这里插入图片描述

Driver和Connection之间是通过DriverManager类进行桥连接的

在这里插入图片描述


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小智RE0-走在路上

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值