思考了好一阵,总是没有一个合适的答案,感觉没有办法继续往下写了....
先展示一下Bridge设计模式的目的就是:将抽象与其实现解耦,使它们可以独立的适应变化,这是在Gof中的描述(很是通用,但是没有感觉....)
老实说,教材中的例子比较抽象啊,不是很容易理解,但是讲解还算可以,毕竟是外文啊,参考了一些博客内容,感觉这个讲解比较集中,好理解。
桥梁模式的用意是将问题的抽象和实现分离开来实现,通过用聚合代替继承来解决子类爆炸性增长的问题。
比如我们有一个画图程序 有2个图形(Circle Rectangle )和2种画图方法(Drawing1 Drawing2)
图形可能会使用Drawing1来画图 也可能使用Drawing2来画图
在这个画图程序中有两个可变因素 一个是图形的种类 有可能会增加新的图形 另一个是画图方法 可能会有Drawing3出现
当系统有两个可变因素时 我就应该考虑到桥梁模式,至少它应该在你的脑子里闪过
在面向对象设计中有两条重要原则
1.找出变化并封装之
2.优先使用聚合而不是继承
这两条将在桥梁模式中得到完美体现
具体的例子看上面这个链接、教材、和这个链接 就够了!实际的应用中用到了,再做补充!仔细想来,这个算作connecting different types 的模式是很准确的,它就像是两个Strategy模式拼凑而成,从一端变化转化为两端都在变化,相同点是遵循了面向接口编程+接口的开闭原则!