【设计模式】Java设计模式 - 桥接模式

1|0【设计模式】Java设计模式 - 桥接模式

😄 不断学习才是王道
🔥 继续踏上学习之路,学之分享笔记
👊 总有一天我也能像各位大佬一样
🏆原创作品,更多关注我CSDN: 一个有梦有戏的人
👊准备将博客园、CSDN一起记录分享自己的学习心得!!!
🌝分享学习心得,欢迎指正,大家一起学习成长!

请添加图片描述

1|1简介

桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。

这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。

1|2桥接模式实例

桥接模式:将实现和抽象放在两个不同的类层次中,使之各自可以独立改变。
他的主要特点是把抽象与行为分离开来,保持了各自的独立性和扩展。

举个汽车例子,汽车有多种品牌,也有多种类型,在扩展样式或者品牌的时候互不影响,我们就可以将抽象部分与实现部分分离,使它们都可以独立的变化,让它们独立变化,来减少它们之间耦合。

UML图:
在这里插入图片描述
提供商标接口类,汽车品牌是他的实现类;汽车类是抽象类,汽车的类别通过继承抽象类来分离出来。

1|3代码示例

代码如下:

1|0①、品牌接口

package com.lyd.demo; /** * @Author: lyd * @Description: 汽车品牌的接口 * @Date: 2022-08-28 */ public interface Brand { void info(); void open(); void close(); }

1|0②、汽车品牌

继承汽车接口类

package com.lyd.demo.car; import com.lyd.demo.Brand; /** * @Author: lyd * @Description: 奔驰汽车类 * @Date: 2022-08-28 */ public class Benz implements Brand { private String type; public Benz(String type) { this.type = type; } public void info() { System.out.println("奔驰汽车->" + type); } public void open() { System.out.println("奔驰汽车"); } public void close() { System.out.println("奔驰汽车"); } }

红旗汽车类相同,这里就不贴代码,详细代码之后会上传github中。

1|0③、抽象汽车类

通过聚合方式,使用构造法获取品牌对象进行实例化

package com.lyd.demo; /** * @Author: lyd * @Description: 汽车抽象类 * @Date: 2022-08-28 */ public abstract class Car { private Brand brand; public Car(Brand brand) { this.brand = brand; } public void info() { this.brand.info(); } public void open() { this.brand.open(); } public void close() { this.brand.close(); } }

1|0④、汽车类型子类

继承父类,重写父类方法,这里也调用了父类方法,用打印的方式简单理解

package com.lyd.demo.type; import com.lyd.demo.Brand; import com.lyd.demo.Car; /** * @Author: lyd * @Description: 新能源 * @Date: 2022-08-28 */ public class NewEnergy extends Car { public NewEnergy(Brand brand) { super(brand); } public void info() { System.out.print("新能源类型汽车 -- "); super.info(); } public void open() { System.out.print("新能源类型汽车启动 -- "); super.open(); } public void close() { System.out.print("新能源类型汽车关闭 -- "); super.close(); } }

1|0⑤、桥接模式测试

通过new汽车类型方式获取汽车对象,其中可得到什么类型什么品牌的汽车

package com.lyd.demo.bridge; import com.lyd.demo.Car; import com.lyd.demo.car.Benz; import com.lyd.demo.car.HongQi; import com.lyd.demo.type.NewEnergy; import com.lyd.demo.type.Suv; /** * @Author: lyd * @Description: 测试 * @Date: 2022-08-28 */ public class BridgeTest { public static void main(String[] args) { Car banz = new Suv(new Benz("GLA")); banz.info(); banz.open(); banz.close(); Car hq = new NewEnergy(new HongQi("H5")); hq.info(); hq.open(); hq.close(); } }

运行结果:
在这里插入图片描述
👍创作不易,如有错误请指正,感谢观看!记得一键三连哦!👍

💓德德小建议:

理解设计模式不是一件简单的事情,需要不断的学习和动手去练习,才能理解。只有掌握好设计模式,才能够真正的理解SpringAOP和Mybatis的底层原理。各位读者可以和我一样,动手敲一敲代码,甚至用不同的例子来做,通过debug一步一步调试,还有就是多看看别人的例子。能够有助于理解!谢谢各位观看指点!❤️ ❤️ ❤️


__EOF__

本文作者怒放吧德德
本文链接https://www.cnblogs.com/lyd-code/p/16671528.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   怒放吧德德  阅读(671)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示