桥接模式

设计初衷:将抽象和实现解耦,让它们可以独立变化。

更加贴切的理解:一个类存在两个(或多个)独立变化的维度,我们通过组合的方式,让这两个(或多个)维度可以独立进行扩展。

这里所说的抽象和实现,我们不能简单的理解为是Java中的接口和实现类,而是一个更加高维度的一个描述,或者可以说是抽象和具体两者的关系。

正文

我们使用JDBC来操作数据库时会有很多模板式的代码。例如加载驱动,获取连接,执行sql等等。其实大部分的操作最终都是委托给具体的Driver类来执行的,因此我们完全可以直接替换驱动类来决定使用Mysql还是Oracle数据库,而不需要改动或者只需要改动很少的代码。

对于JDBC这个模块来说,它不是一个Java定义的interface,但是它从语义上来说是抽象的,它是Java规范定义的操作数据库的规范,但是它并不是一个简单的接口,但是可以理解为一个更加广义的“接口”。

从以上的角度来说,具体数据库厂商的驱动类就是这个更为广义的“接口”的实现类了,而这个实现类也更为复杂,它必须实现整个JDBC的规范,一个完整的操作数据库的规范。在JDBC中是通过组合DriverManager委派来实现的(与具体的驱动一样实现了Driver接口)。

小结

桥接模式,其实代码结构是比较简单的。通过组合的方式来引入实现模块,使得抽象和具体解耦。其难点还是在于理解抽象和具体的关系,区别于Java中的interface和实现类。

原文 

https://aspire814.github.io/2020/04/20/桥接模式/

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » 桥接模式

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址