有很多朋友学设计模式,都知道这是个提高功力的东西,但如何去学一直没有特别好的方法,学的不错的,能把几乎所有的模式的类图画出来,而且能把其间的关系将的头头是道,学的迷糊的,可能各个模型之间的区别都分不太清楚,但究竟怎样才能把这些图彻底消化掉,变有招为无招呢?我自己也不例外,记着刚学设计模式的时候,看那本经典的《design pattern》,好容易看明白了,脑袋里只有那些类图了,但怎么去实践呢?匆匆写几个看似符合pattern的例子,有用吗?好像没有效果。当然,最直接的办法是设计一个项目,想办法把这些pattern用进去,看似不错的一个程序。。。。。然而没有用,这并不能真正变为自己的东西,因为软件开发过程其实是先有图纸,后去买材料,而不是先有砖瓦再考虑设计什么样的房子。但在学习的开始,你并没有足够的能力去设计一张能充分利用砖瓦的图纸出来。怎么办? 我个人觉得对自己以前代码进行重构(Refactoring),效果会相对比较好~~重构的过程是自我批评的过程,它往往比批评别人困难,但一个好处是你对它熟悉,从中抽象出来一些模式进行refactoring,呵呵,也许这本身就是战胜自我的过程吧。
这个过程最重要的是忘却,忘掉那些该死的不能体现pattern本意的名字,甚至类图也不用有什么印象,学习模式的唯一目的是让那种自己最原始的想法是高效的、可扩展的,管他叫什么模式,Builder和Abstract Factary 有本质界限吗? 都忘了就对了,唯一的原则是进行合理的抽象,只要你的设计颗粒度合理,最终的效果不错,钱源源不断的挣到手 就成了 ^_^