初学设计模式的时候,感觉自己写的代码必须套用几个模式才行,总是看原来的代码不顺眼,想重构成某某模式的样子。就像刚学C++的时候,一定要搞个基类然后继承一下才行。手上有把锤子,一切都成了钉子。
最近又开始看《设计模式》,又有了一些新的认识。感觉模式就是一种抽象出来的概念和术语。就像围棋,原来并没有定式,后来在实践中被人们认可了,就成了定式。而且围棋高手看到某个局面后,就会知道开局是用的那种布局,局部是什么定式。程序员也一样,了解模式后,一看代码就知道原来用的是什么模式。
由于从零开始开发的机会比较少,一般都是维护前人的代码,所以看懂人家的代码很重要,不至于在添加新功能的时候,把原来很好的设计破坏掉。如果看到有xxImpl这样的类,很有可能就是用到了Bridge模式;如果有instance(),可能是singleton模式;如果有A(new B(new C))这样的可能是decorator模式等等。