-Head First Design Pattern- 大师与门徒(3) -Favor Composition over Inheritance

大师:蚱蜢啊,前上一谈,谅达雅鉴,迄今有些时日了吧。你对“OO中的继承”有什么彻悟吗?
门徒:是的,大师。“OO继承”之强大,非吾之言能尽。及至后来,亲见知识,发现“OO继承”并非神通广大,不是总能设计出容易伸缩和维护的代码!
大师:呀,的确如此,看来你已经长进了很多了啊。告诉我,我亲爱的蚱蜢,如果不通过“继承”,何以复用?Copy?
门徒:哈,说笑了,大师,我想在运行时(RunTime)可以采用组合和委托的方法来代替“继承”。
大师:Go On   …
门徒:以前我们在子类中采用继承父类的方法,在编译时(Compile Time)所有的行为都被固定死了!另外,这时所有继承后的子类都有重复的行为。现在,如果我们通过组合的方法扩展类的行为,在运行时(RunTime)使用这些行为变得Easy!
大师:非常好,蚱蜢,你已经开始了解组合方法的威力了。
门徒:是啊,通过这个技术,产生的对象不仅可以包括父类所有的功能(这些功能我们可能根本没想到过),而且不用修改父类的代码,就可以为对象增加更多的功能了,神奇!
大师:那么通过组合的方法维护你的代码,你收获了哪些东西呢?
门徒:组合,哼,我不必修改原来的代码,要增加新的功能,就编写新的代码。
由于我没有修改原来的代码,所以bug的产生和无意识地对以前代码造成的影响大大减少,厉害吧。
大师:非常好,今天就到这里了,蚱蜢。我希望你继续深入学习这个主题…记住,代码对修改必须是关闭的,就像晚上的睡莲;对扩展必须是开放的,就像是早上的睡莲。
posted @ 2006-05-15 17:10  MasterCai  阅读(713)  评论(0编辑  收藏  举报