學習設計模式的心得

從幾年前開始接觸設計模式之後,一直覺得設計模式真的是太酷了!而這其間看了一些設計模式的書籍與文章,也實作了一些模式,深深覺得大師們的教導是對的。

但要到達大師所體悟的境界,以我目前的程度來說還差得很遠;所以就我個人所學的過程,我簡單整理出一句話,那就是:

找出模式,熟悉模式,模仿模式,忘掉模式,而後領悟模式。

找出模式

當看完書中的內容後,我曾迫不及待地想去試試看模式怎麼用。不過後來我發現,我根本不知道從何用起。

因此,我換了個方式。我試著在一些知名的 Open Source 專案中,看看高手們是如何解決問題的;然後再從這些解決方案中,去分析出模式的蹤影。

當然這些解法不見得百分之百符合書上的模式範例,因此我也曾經誤判過一些模式。但我會再回頭看看書中對模式所描述的核心概念,去找出這些解法背後所隱藏的真正模式。

熟悉模式

接下來我不斷地去用我熟悉的工具 (也就是 PHP ) 去練習模式的基本架構,試圖去找出該工具在模式上的最佳實作方法。

當然這些練習的成果並不能真正派上用場,而且也不見得是最佳方法;不過這樣的練習方式為我日後在實戰時,提供了不小的幫助。

模仿模式

後來在實戰時,我開始模仿別人在模式上的經驗;也剛好有些專案較為複雜,我便試著用模仿到的作法來一一解決這些難題。

這種方式所得到的解法,讓我覺得異常的漂亮;但也就從這時開始,我漸漸陷入模式迷思,開始認為絕大部份的問題都可以用模式解決。

忘掉模式

以前看書時,一直無法理解大師為什麼要說不要將模式硬套在設計上;直到有次維護某個使用模式解決的專案功能時,發現它讓我難以理解,我才知道自己對模式有走火入魔的跡象。

我重新再把書上的內容翻過一次,大師的當頭棒喝及時地敲醒了我,有時簡單的解法就可以幫助你完成目標。模式只有在你真正需要時,才會浮現在你心中,並透過重構去找到它們;用不到時,就暫時忘了它吧。

領悟模式

嚴格來說,模式的領悟,一直是我還未到達的境界。

要能看出程式用了哪些模式,要能輕鬆地用模式與伙伴溝通,要能確定自己需不需要模式,要能隨心所欲地使用模式;我認為要做到這些要求,才算是我個人對模式有了真正的領悟。

希望,會有這麼一天。