【2013.1.22】设计模式C++ 实现——Bridge
// // // // // // // // //
///2013.1.22
// // // // // // // // //
老师布置了一项作业,
——制作一个小板凳。
被誉为天才的舒马赫同学很快的完成了一个又漂亮,又精致的艺术板凳。
而一直被班上同学所嘲笑的笨笨的爱因斯坦同学磨磨蹭蹭地,
转天早上才交上一个形状奇异而古怪的"小板凳"。
这是小时候看到的一篇励志故事。
不管寓意如何,
但是它正好可以适合我们今天所要讲的结构型设计模式:Bridge。
【核心】将抽象部分与它内部所组合的部分分离,使得它们可以独立地变化。
这是我将GoF的官方解释稍微变更一下所得的结论。
来看一下UML图:
其中Abstraction就是上述的抽象部分,
内部所组合的就是AbstractionImp。
实现的方法十分简单,
Abstraction内部组合一个(或多个)同学,
然后下达一个命令(例如老师布置制作小板凳作业),
而具体的实现,
就看传到Abstraction构造函数里面的是舒马赫还是爱因斯坦同学了。
这是一个非常实用的模式。
使用组合代替继承,
很好地代表了设计模式的核心思想:low coupling,high cohension.