设计模式总结-不要滥用模式
从前年开始接触设计模式,一直都想深入设计模式的精髓,却都因为懒惰,再加上潜质不够(因为每次读完一个模式,都会有新的收获,而不能象金庸小说中的少侠,天资聪慧,绝世武功一遍搞定),还在继续努力着。 最开始读的是GOF的《设计模式:可复用面向对象软件的基础》,读到了一半,因为项目时间越来越紧张,每天晚上加班回去后就想睡觉。于是,书的下一半到现在几乎都是新的,一直都放在我的床头。后来,开始拜读阎宏老师的《java与模式》,新的项目也开始了,又因为惰性,看一会停一会,最终导致一个结果是:创建模式读了3遍,结构模式读了2遍,而行为模式只读了1遍。最近,改变了读书方式,感觉下来还不错。这次借blog开通之际,记录一下大师们的观点,让没有接触过的朋友了解一下,也许会有收获。不知道过几年后,看到这些,我会是什么心情呢?呵呵,也许还在努力着。
我设想分几步走:第一步,因为《java与模式》我完整的看过,所以总结先以《java与模式》开始。第二步,读完《设计模式:可复用面向对象软件的基础》,然后进行总结;第三步,总结它们之间的区别。
现在就从阎宏老师的《不要滥用模式》开始我的记录。
从理论上将,面向对象的编程鼓励代码的复用,而设计模式本身是经过时间检验的设计方案,因此,应当说设计模式便是对成功的设计方案的复用。通过设计方案的复用,可以带动代码的复用,达到提高代码复用率的作用。但是所有的理论在应用到实践中的时候,都必须对具体问题做具体分析。
随着设计模式越来越普及,又一种倾向也变得越来越明显,这就是没有经验的设计师对设计模式的盲目崇拜和过分的追求。这些设计师不是全力以赴地为它们所面临的问题找出最好的设计,而是将力气放在如何尽可能多和频繁地使用著名的模式。它们错误地认为,只要使用了这些设计模式,就可以保证一个设计方案是好的设计方案。因此,使用模式越多,设计就越好,这就导致了很多根本没有意义的设计。在这些设计里充斥着著名的设计模式,但是设计却和系统的需要严重脱节。
要想恰到好处地在一个系统里面使用设计模式,必须做到一下几点:
1、完全了解面临的问题,这就是说要完全了解具体情况。如果不完全了解所面临的问题,怎么能谈得上解决问题呢?
2、完全了解模式,这就是说要十分懂得理论。如果不完全懂得所使用得理论,怎么能够正确地应用这一理论呢?
3、非常了解怎样使用设计模式解决实际的问题,这就是说要将模式理论与具体系统需求情况相结合。如果设计师不知道一个设计模式怎样对系统设计有帮助的话,最好不要使用这个模式。不要只是因为想在简历上写设计模式方面的经验就盲目地使用模式。
很多时候,也许大概知道模式的所解决的问题,知道模式模式的类图,我们都是为了用模式而使用模式,对于模式的不了解,不了解模式所要解决的问题,不了解模式的特点,不了解它们的适用范围,不了解它们之间的区别,造成了设计方案的失误。模式是用了一大堆,却没有得到应有的效果,代码的维护还是牵一发而动全身(夸张了啊)。这样使用模式,也许还不如不使用模式的效果,也许是对的。
好了,下班回去做饭了。