l

2012年5月25日 星期五

如何學GoF的Design Patterns

May 24 20:31~21:45

image

由於這陣子花了一些時間在重讀GoF的Design Patterns這本書,讓Teddy重新思考起一個問題:要如何學會GoF裡面的23個patterns?

說實話,既使Teddy用了十幾年的design patterns,回頭再讀GoF的書,有些地方如果不動動腦筋,還不是那麼容易可以體會。倒不是說看不懂單一pattern的目的與要解決的問題,而是對於套用patterns之後可能造成的影響,以及書中有些非常精簡的敘述,認真讀起來還是頗花腦力。讀到後來有點好像在準備博士班資格考的感覺,快走火入魔啦。

GoF這本書絕對稱得上是經典之作,但Teddy個人覺得,本書有兩大敗筆。第一,剛剛已經說過了,有些敘述太過與精簡(這四位大師有時突然變成了省話一哥XD),有時候感覺好像在讀學術論文一樣,要很用力想才可以想懂,有時候甚至怎麼想也想不通…Orz。第二,就是裡面的例子Teddy個人覺得舉的不是很好。C++的範例感覺都是很片段的程式碼,更不用說Smalltalk的例子…Orz。

當年市面上關於design patterns的書很少,所以就只能看GoF的書。最近因為要教design patterns,找了一下才發現多了好多design patterns的書。Kay幫Teddy從圖書館借了「大話設計模式」這本大陸人寫的書,這本書Teddy覺得寫得還滿好的。該書用兩人對話的方式,以日常生活中遇到的問題當作範例,來解釋GoF裡面23個pattern。書中的例子是用C#寫的,也滿容易理解。另外,有一天Teddy偷偷翻了一下某人放在桌上的「深入淺出設計模式 (Head First Design Patterns)」這本書,雖然沒有時間細讀但感覺起來應該也是挺不錯的。

剛剛上網路查了一下,在天瓏書局的網站看到這本「設計模式之禪」(怎麼最近老是看到大陸人寫的電腦書啊,不過都還寫的不錯…Orz),引用幾句天瓏書局的網站對於此書的書本介紹:

如果說“四人幫”的《設計模式》是設計模式領域的“聖經”,那麼之後出版的各種關於設計模式的書都可稱之為“聖經”的“注釋版”“聖經的故事”。本書是得道者對“聖經”的“禪悟”,它既不像“聖經”那樣因為惜字如金、字字珠璣而深奧、晦澀和難懂…。

哇,這本「設計模式之禪」……的書本介紹,真是寫得太棒了啊。用「聖經」和「聖經的注釋版」來說明GoF的Design Patterns與其他design patterns書籍之間的關係,真是絕妙的比喻啊。改天要去天瓏翻一下這本書在講什麼。

又扯遠了,重點是,Teddy認為,學好Design Patterns,如果直接去讀原版的「聖經」覺得太難的話(在這邊要插花一下,如果英文版的GoF的Design Patterns看不懂,絕對不是鄉民們的英文太爛了。就算是買了中文版的GoF Design Patterns,保證更看不懂。不是葉秉哲先生翻譯得不好,而是「聖經」本來就不容易閱讀啊…不然為什麼需要牧師來幫忙解釋「聖經」的內容…XD),可以先看一下「大話設計模式」或是「深入淺出設計模式 (Head First Design Patterns)」,先把每一個patterns是在做什麼的大致搞懂。之後如果覺得真的想要再深入了解design patterns,再花時間去看GoF的Design Patterns這本書。

另外一種學習的方式,就是把「聖經」跟「聖經的注釋版」都放在身邊,兩本一起交互著看,這也是一個不錯的方法。

最後一點要提醒鄉民的,學design patterns,光是看書絕絕對對是沒有用的,一定要動手寫程式練習。如果覺得書中的例子不夠,或是看不懂,那就到網路上去找。這十幾年來design patterns已經變成一種軟體設計的基本常識了,網路上熱心的鄉民也很多,很容易可以找到寫得很棒的例子。Teddy自己的親身體驗,書看十遍,還不如動手寫程式一遍。

看到這邊,鄉民們還在等什麼。趕快打開你的Eclipse或是Visual Studio.Net寫程式啦。

***

友藏內心獨白:以前是大陸人看台灣人寫的電腦書,現在幾乎是反過來。台灣在軟體方面原創性的書已經越來越少了。

4 則留言:

  1. 作者已經移除這則留言。

    回覆刪除
  2. 以前是大陸人看台灣人寫的電腦書,現在幾乎是反過來。台灣在軟體方面原創性的書已經越來越少了。
    真是感概!

    回覆刪除
  3. 大陆人的软件水平现在很厉害的哦。。。你说的那几本书都是几年前的了。。

    回覆刪除