August 27 16:30~17:12
練習活動也可以選擇pair programming喔XD。
第二天的課程一早趁著學員腦袋清晰的時候,先搬出State模式伺候。State模式說難也難,說簡單也簡單。只要能夠劃出state transition diagram,把每個狀態用一個State類別來表示,再接著實作每一個transition就OK了。
這個State從講解到實作,花了一個早上的時間,實際操作過一次,相信每位學員都了解State模式的用法。
下午開始學員們剛吃飽,先來個簡單的Facade模式。講解完畢之後請學員們在紙上畫出自己經歷過的Facade模式。
緊接著上場的是Template Method。提到這個模式,就一定要介紹另外一個重要的物件導向原則:Narrow Inheritance Interface Principle。
接下來用一個逐步演化的例子,介紹Simple Factory、Factory Method、與Abstract Factory這三個有點像,又不會太像的模式。當然最後也是要把Factory Method與Abstract Factory給實做出來。
***
這次三天的課程雖然還有一天才會結束,但光是上前兩天的課就讓Teddy有很多感想,以下是最重要的四點:
- GoF的design pattern真的沒有想像中那麼的難以學習,重點是有沒有找到好的學習方法和途徑。
- 教design pattern實作班雖然累,但是看到不同背景的學員可以當場練習一次每一個pattern的寫法,還是覺得這種教法比較有效(不過成本會比較貴XD)。
- 有些人可能認為自己了解design pattern,但實際上卻只是看到pattern表面的含意,這是非常危險的。因為誤用design pattern比不用design pattern還要可怕很多啊。有病還是要看醫生,不要隨便吃亂成藥 XD。
- Christopher Alexander的pattern與pattern language這套方法,不只對軟體開發有幫助,對於分析困難與複雜問題也很有幫助。
***
友藏內心獨白:真的是教學相長。
沒有留言:
張貼留言