C++设计模式之桥接模式

C++ 设计模式之桥接模式

将抽象部份与它的实现部份分离,使它们都可以独立地变化。

  • C 设计模式之桥接模式
    • 一缘由
    • 二实现
    • 三代码
    • 四总结

一、缘由

假设现在需要大、中、小、三种型 的画笔来绘制7种不同的颜色,如果使用蜡笔,就需要准备 3*7 = 21支蜡笔。而如果使用毛笔,则只需要3支毛笔和7中颜料。显然使用毛笔的形式要比蜡笔简单许多,这其中缘由在于在蜡笔这个对象中型 和颜料两个不同维度的因素耦合太强,而毛笔的型 和颜色属于松耦合的关系。 在毛笔实例中,型 大小和颜色是分离的,可以独立变化的。 这就是桥接模式的基本思想:将不同维度的变化职责抽取出来形成各自的继承等级结构,从而能够让其分别独立变化。

二、实现

我们给出桥接模式的UML类图如下:

显然因为我们将音频解码播放音频的职责设计成了强耦合,于是我们的系统结构变得复杂了,这就是违反单一职责的后果。于是我们使用了桥接模式,将操作系统播放音频的职责抽取出来,成为一棵新的继承树,让播放音频和音频解码两个职责独立变化。这样播放器的音频播放部分被抽离了,也就是抽象和实现分离。使用了桥接模式的UML类图如下:

桥接模式的优点 :

  • 分离了抽象和实现。桥接模式使用了聚合代替了原本类间的绑定关系(继承具有侵入性),实现松耦合。

  • 变化的因素之间相互隔离,独立变化,方便拓展。桥接模式在增加系统的新实现的时候,不需要修改已有类,符合开闭原则。

桥接模式的适用场景:

  • 当继承树过于复杂时,应该考虑使用桥接模式。
  • 当一个类中存在着多个变化的维度的时候,应该考虑桥接模式。

文章知识点与官方知识档案匹配,可进一步学习相关知识CS入门技能树Linux入门初识Linux24701 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2016年2月4日
下一篇 2016年2月4日

相关推荐