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





