桥接模式(Bridge)




核心理解

桥接模式做了这样一件事情:

就像图中所示:如果想要一个联想的台式电脑,那么就需要两层继承来拿到这个对象(类),第一这是低效率的,第二这是一种静态的定死的方式,扩展性很差。桥接模式的思想是把抽象化和实现化进行解耦分离,比如说无论有多少个品牌,抽象来看它们都只是品牌,无论有多少种电脑,它们都只是电脑。这样的话可以抽象出两个维度,一个是类型、另一个是品牌。具体的实现就是自由组合:XX品牌的XX种类电脑。

优化:本来如果要这九种电脑需要3*3=9个类,现在需要这些电脑只需要3+3=6个类,如果数量级更大,桥接模式的好处可想而知,可以大大减少子类的个数

根据依赖倒转原则,实现要依赖抽象,所以首先会有一个抽象的电脑类,这个抽象类的子类是各种类型的电脑,其次需要一个电脑的品牌接口,实现这个接口的类是各种品牌!

这个抽象电脑类和品牌接口类是组合的关系,抽象电脑类通过Setter方法注入一个具体的电脑品牌对象,然后用其方法结合自身的电脑种类获得这个品牌的各种类型的电脑!


补充:【抽象类和接口的区别】

含有abstract修饰符的class即为抽象类,abstract 类不能创建实例对象。含有abstract方法的类必须定义为abstract class,abstract class类中的方法不必是抽象的。abstract class类中定义抽象方法必须在具体(Concrete)子类中实现,所以,不能有抽象构造方法或抽象静态方法。如果子类没有实现抽象父类中的所有抽象方法,那么子类也必须定义为abstract类型。

接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的。接口中的方法定义默认为public abstract类型,接口中的成员变量类型默认为public static final。

下面比较一下两者的语法区别

  1. 抽象类可以有构造方法,接口中不能有构造方法。

  2. 抽象类中可以有普通成员变量,接口中没有普通成员变量

  3. 抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。

  4. 抽象类中的抽象方法的访问类型可以是public,protected和(默认类型,虽然

eclipse下不报错,但应该也不行),但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。

  1. 抽象类中可以包含静态方法,接口中不能包含静态方法
  2. 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。
  3. 一个类可以实现多个接口,但只能继承一个抽象类。
posted @   靠谱杨  阅读(1219)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2020-11-30 【已解决】JDBC --- update代码运行成功但是数据库数据没有更新

喜欢请打赏

扫描二维码打赏

了解更多

点击右上角即可分享
微信分享提示