Sunday, August 31, 2014

盤點 Design Patterns

前一陣子有朋友問 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 會建議學習順序為:

  1. Singleton、Factory Method、Adapter、Composite、Command、Observer
  2. Builder、Abstract Factory、Facade、Proxy、State、Template Method。
  3. Bridge、Strategy、Visitor、Mediator、Iterator、Prototype。
  4. Decorator、Flyweight、Chain of Responsibility、Interpreter、Memento

上述建議純粹為 Teddy 個人的偏見,鄉民隨便看看就好,不用太在意。


寫到這邊突然有一個問題:真的有鄉民把這 降龍18掌 23 個 patterns 一口氣全部都派上用場嗎?有的話請介紹給 Teddy 認識一下,要跟他學習。

http://teddy-chen-tw.blogspot.ca/2012/01/design-patterns.html

No comments: