l

2012年8月28日 星期二

Design Patterns這樣學就會了:入門實作班,Day 2

August 27 16:30~17:12

螢幕快照 2012-08-27 下午5.14.58

練習活動也可以選擇pair programming喔XD。

 

第二天的課程一早趁著學員腦袋清晰的時候,先搬出State模式伺候。State模式說難也難,說簡單也簡單。只要能夠劃出state transition diagram,把每個狀態用一個State類別來表示,再接著實作每一個transition就OK了。

螢幕快照 2012-08-27 下午4.34.05

這個State從講解到實作,花了一個早上的時間,實際操作過一次,相信每位學員都了解State模式的用法。

下午開始學員們剛吃飽,先來個簡單的Facade模式。講解完畢之後請學員們在紙上畫出自己經歷過的Facade模式。

螢幕快照 2012-08-26 下午9.25.11

螢幕快照 2012-08-27 下午4.41.24

螢幕快照 2012-08-27 下午4.41.53

緊接著上場的是Template Method。提到這個模式,就一定要介紹另外一個重要的物件導向原則:Narrow Inheritance Interface Principle。

螢幕快照 2012-08-27 下午4.43.51

 

接下來用一個逐步演化的例子,介紹Simple Factory、Factory Method、與Abstract Factory這三個有點像,又不會太像的模式。當然最後也是要把Factory Method與Abstract Factory給實做出來。

螢幕快照 2012-08-27 下午4.47.47

螢幕快照 2012-08-27 下午4.48.35

***

這次三天的課程雖然還有一天才會結束,但光是上前兩天的課就讓Teddy有很多感想,以下是最重要的四點:

  • GoF的design pattern真的沒有想像中那麼的難以學習,重點是有沒有找到好的學習方法和途徑。
  • 教design pattern實作班雖然累,但是看到不同背景的學員可以當場練習一次每一個pattern的寫法,還是覺得這種教法比較有效(不過成本會比較貴XD)。
  • 有些人可能認為自己了解design pattern,但實際上卻只是看到pattern表面的含意,這是非常危險的。因為誤用design pattern比不用design pattern還要可怕很多啊。有病還是要看醫生,不要隨便吃亂成藥 XD。
  • Christopher Alexander的pattern與pattern language這套方法,不只對軟體開發有幫助,對於分析困難與複雜問題也很有幫助。

***

友藏內心獨白:真的是教學相長。

沒有留言:

張貼留言