重温设计模式(二)——桥接模式(Bridge)2010-04-11 博客园 飞林沙一.从树谈起基本上所有人都知道树这个概念。稍微深究.NET本质的人会懂得,.NET有个对象树。学习ASP.NET的人肯定会知道,Web上有个控件树。哪怕是只学习过数据结构应付考试的大学生也会知道Tree这个概念。二.把需求扩展成树举个我们最常用的Photoshop做例子。在Photoshop中,有许多图形工具,比如星星,比如方形,再比如圆形等等。在Photoshop中,不用多说,也有很多种颜色供我们选择。于是就产生了,红色的星星,绿色的星星。红色的方形,绿色的方形等等。看看所产生的树:

现在是三种图形,三种颜色,于是我们就一共去声明了九个类,当然我们还不算中间过程中的辅助父类。如果我们现在是18种图形,12种颜色,那么我们就需要写18*12个类,然后加上12个颜色的类和一个总父类,一共我们需要12*18+12+1=229个类。让我们记住这个数字。希望大家不要和我抬杠说,我们可以把颜色写成Color然后动态传入。我们这里是假设并不存在Color这个属性,而需要我们自己去实现。三.对象爆炸这个词我已经在两个设计模式中提到了。在<重温设计模式(一)——享元模式>中,我就用到了这个词。当然,这里的爆炸并没有上篇文章中的那么恐怖。但是追寻完美的我们也应该去改善他。那就让我们开始想办法。