C++常用设计模式之:桥接模式

桥接模式也是一个很特殊的模式,它也是既用到了继承也用到的了组合的模式,看到这里是不是觉得和之前说过的装饰器模式非常的相似?它们确实有一些共同的地方,即都是利用组合的方式解决了继承带来的子类规模过大的问题。不同点就是装饰器模式是为了给一个对象增加一些额外的职责,而桥接模式其实是解决了两个或者多个类不同方向演化(简单来说就可以理解为两个类的演化)的问题,而这些类本身也是有着某种联系。这样解释好像还是太抽象了。。。算了,看看它的定义吧。

桥接模式的定义:是将抽象部分(稳定的基类A)与它的实现部分(稳定的基类B)分离,使它们都可以独立地变化(变化的)。

对照着上面的定义,我们可以这样梳理一下:有一个类,它的内部可以看作有两个组成部分,分别是抽象的定义和抽象的操作,那么我们就可以把这个类分为两个部分,分别是稳定的基类A稳定的基类B,它们虽然分开了,但是它们还有着联系(就是A中包含着B的指针),这就是组合。然后呢,它们又可以独立的变化(就是分别从A和B继承出新的类,干一些其他的事)。这下就很好理解了吧。

用现实中的例子来类比,这里引用一下博客专家一去、二三里在他的博客中解读桥接模式时用的例子,个人感觉非常的贴切。https://blog.csdn.net/liang19890820/article/details/79501177(附上大神的链接)

他引用生活中常见的开关和电器的关系来解释桥接模式,结合我们上面所说的来看,开关就是类A,电器就是类B,而开关本身不是独立存在的,它必然要关联一个电器,因此在类A中要包含一个类B的指针。将开关类A作为基类,可以演化出不同的开关(拉链式开关、两位开关)。将电器类B作为基类,可以演化出不同的电器(电灯,风扇)。这样一解释是不是就和定义对上了。

UML结构图如下:

                          

 

下面我用伪码来表述上面的例子。

//哈哈哈!代码我就不献丑了,既然引用了大神博客中的例子,大家如果有兴趣就去大神的博客中看吧
//链接上面已经给出了

现在返回那张UML图我们再来看:

                       

结合到上面的例子和桥接模式的定义,我们可以看到抽象的定义(或者叫业务功能)和抽象的操作(或者叫平台实现)是稳定的部分,而它们又能够各自的变化,这就是变化的部分。桥接模式的精髓应该就是那个基类A中包含的那个基类B的指针。正是这个指针使得从基类A和基类B中继承得来的子类可以进行不同的组合产生多样的变化。

最后,如果理解的有偏差,还请指出!

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值