前一陣子有朋友問 Teddy 能否去教他們公司的工程師 design patterns。想起 Design Patterns 這本書 Teddy 已經有一陣子沒有去看它了,最近一次仔細重看書中的 Memento 是為了研究 exception handling 裡面關於 state restoration(狀態回復)的問題,那是多久以前的事現在回想起來居然沒有任何印象...Orz。只依稀記得當年在看 Memento 的時候其實搞不太懂這個 pattern 可以用來幹麼,所以好像從來也沒用過它。一直到 10 幾年後突然發現 Memento 可以應用在例外處理設計,算是替 Memento 找到一份工作了...XD。
Design Patterns 這本書是 Teddy 在 1997年10月24日在天瓏書局買得,算一算已經是14 年前了事了。當初會買這本書,好像是在 BBS 討論區看到某位前輩提到這本書,後來去天瓏翻了一下覺的寫得真棒就買回家。一看之下真的不得了,讀完之後(其實沒有整本全部讀完啦)覺的自己的軟體設計功力大增。書中所講得設計觀念,現在看起來可能覺的是「常識」,可是有好多 patterns 可是 Teddy 自己慢慢在專案中一一自己實做過之後,才體會到這些 patterns 的意義(剛開始自己學習的時候也是一頭霧水)。
***
10 幾年前 Teddy 也有做了一些投影片,在自己還是一知半解的情況下,跟公司的同仁分享 Design Patterns(好東西要跟好朋友分享啊)。當年 Teddy 還是個年輕小伙子,被問到自己也不懂的地方,就說一聲「不會」也就沒事了。但是現在「年事已高」,如果還被問到不會的地方就有點尷尬了(年紀大有年紀大耍無賴的方式...XD)。所以才想說把書拿出來「盤點」一下,看看那些 patterns 是自己很熟的,那些是很少實做而且已經忘得差不多的。
- Creational patterns:幾乎稍微大一點的案子都會用到裡面的五種 patterns,尤其是 Singleton,Factory Method 和 Builder。
- Structural patterns:除了 Decorator、Flyweight 以外,其他的 patterns 用到的機會都滿多的。
- Behavioral patterns:Command、Observer、State、Strategy、Template Method、Visitor 用到的機會最多,Iterator、Mediator 次之,Chain of Responsibility、Interpreter、Memento 比較少用到(後面這三個有用過嗎?)。
對於一個剛接觸 design patterns 的新人,Teddy 會建議學習順序為:
- Singleton、Factory Method、Adapter、Composite、Command、Observer。
- Builder、Abstract Factory、Facade、Proxy、State、Template Method。
- Bridge、Strategy、Visitor、Mediator、Iterator、Prototype。
- Decorator、Flyweight、Chain of Responsibility、Interpreter、Memento。
上述建議純粹為 Teddy 個人的偏見,鄉民隨便看看就好,不用太在意。
寫到這邊突然有一個問題:真的有鄉民把這
***
叫人教Design Patterns應該是十年前的事了吧,現在都是常識了。書我比較早買,1995年就買了。
回覆刪除To 匿名:
回覆刪除理論上是這樣,但是還是有很多 programmers 不是很了解或是根本沒聽過 design patterns 耶。
1995 年應該是書出版的那一年,這位大哥很跟的上時代。
很難全用上吧!我之前WiMAX和DVB-H的案子,用上三、四個就很複雜了。
回覆刪除To Spirit Du:
回覆刪除那你有全部 23 個都用過一遍嗎(在不同的專案裡面)?
沒有耶 像Memento、Flyweight、Interpreter這幾個一直沒用到
回覆刪除