随笔 - 77  文章 - 1 评论 - 10 阅读 - 68913
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

GOF对桥接模式(Bridge)的定义是:将抽象部分和它的实现部分分离,使它们可以独立地变化。这里需要记录一些概念,参考自《Java与模式》一书:

抽象化:存在于多个实体中的共同的概念性联系,例如:一组对象如果有相同的概念性联系,则可以用一个共同的类加以描述;如果一些类有相同的概念性联系,则可以用一个抽象类加以描述。

实现化:就是给出抽象化的具体实现,例如:一个对象是一个类的实现化;一个具体类可以是一个抽象类的实现化。

脱耦:耦合是两个实体具有某种强关联关系,将这种强关联关系去掉就是解耦的过程。所谓强关联是在编译时期就已经确定好了关系,例如:继承就是一种强关联关系;而弱关联关系则是在运行期间可以动态地改变关联状态,类的组合关系就是一种若关联关系,这在Java编程中是最常用的一种关系。

 理解GOF所下定义的关键是搞明白“抽象” 和“实现”的含义,这里的抽象说白了就是指一个类及其子类,而“实现”是抽象类及其子类实现自己所用的对象,这句话用汉语说比较困难,请看《Design Patterns Explained》作者的表述:Implementations here means the objects that the abstract class and its derivations use to implement themselves with,这就是“实现”   的含义。比如:有一个图形的抽象类Shape,Shape有相应的子类,比如Rectange类,要实现一个Rectange对象,当然需要Draw方法,如果将Draw方法定义到Shape类中,那么每个继承自Shape类的子类都要自定义自己的Draw()方法,岂不是很麻烦,但是,如果将Draw()方法提炼出来单独放到一个类中(也就是Implementor)中,然后让Shape子类去调用对应的Draw()方法岂不是更妙,这样添加Shape子类就不用再在自己的类中添加Draw()方法了,而是调用相应的ConcreteImplementor中的Draw()方法,下面第一个图是Bridge模式的结构图,第二个图是《Design Patterns Explained》一书中所举画图例子的Bridge模式设计图

图1. Bridge模式结构图

图2. Bridge模式画图设计图

画图举例代码如下:

《Java与模式》一书还举例一个应用的例子,就是JDBC驱动器的实现利用的是桥梁模式

 

posted on   Judy518  阅读(150)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示