时间:1月11日地点:大B房间人物:大B,校
小A:“很多人都吃过三明治,都会知道三明治必不可少的是两块面包片,然后可以在夹层里加上蔬菜、沙拉、咸肉等等,外面可以涂上奶油之类的。”
大B:“假如现在你要为一个三明治小店构造一个程序,其中要设计各种三明治的对象。可能你已经创建了一个简单的Sandwich对象,现在要产生带蔬菜的就是继承原有的Sandwich添加一个蔬菜的成员变量,看起来很‘正点’的做法,以后我还要带咸肉的、带奶油的、带蔬菜的又分为带青菜的、带芹菜的、生菜的……还是一个一个继承是吧!假如我们还需要即带蔬菜又带其它肉类,设置我们还要求这些添加成分的任意组合,那你就慢慢继承吧!”
小A:“呵呵。”
大B:“读过几年书的会下面这个算术,我们有n种成分,在做三明治的时候任意搭配,那么有多少种方案呢?!算算吧!你会有惊人的发现。N种成分,什么都不要是Cn0种方案吧!要1种是Cn1吧……要n种是Cnn吧!”
小A:“加起来不就是吗?”
大B:“牛顿莱布尼兹公式记得吧!总共2的n次方案。有可能前面10天写了K个类,老板让你再加一种成分你就得再干10天,下一次再加一种你可得干20天哦!同时你可以发现你的类库急剧地膨胀!老板可能会说你:XXX前K天你加了n个成分,怎么现在这么不上进呢?后K天只加了1个成分啊?!可能你会拿个比给老板算算,老板那么忙会睬你吗?有可能你的老板会说:不管怎么样我就要你加,K天你还给我加n个成分!”
小A:“呵呵,怎么办啊!跳槽啊!”
大B:“跳槽了也没人要你!人家一看就知道你没学设计模式。”