l

2012年9月3日 星期一

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

Sept. 02 22:11~23:24

螢幕快照 2012-09-02 下午11.16.37

練習Command模式中。

 

螢幕快照 2012-09-02 下午11.17.57

耶,今天pair programming的對象怎麼換人了?

***

第三天的課程先從Command模式開始。

螢幕快照 2012-09-02 下午10.22.22

 

GoF對於Command的解釋,重點的第一句記起來:「Encapsulate a request as an object」。

螢幕快照 2012-09-02 下午10.24.04

 

不只光會用,也要知道如何測試。

螢幕快照 2012-09-02 下午10.26.38

 

這個Command的例子是Teddy特別設計過的,實作結束之後就順便完成了一個簡單的Plugin架構雛形。

螢幕快照 2012-09-02 下午10.27.47

 

接下來是Adapter模式介紹,除了解釋Class Adapter、Object Adapter以外,最重要的還是要介紹Pluggable Adapter

螢幕快照 2012-09-02 下午10.32.08

 

介紹完Adapter之後剛好吃午飯。下午從Strategy開始,程式練習的例子是棒球選手依據教練指示上場以特定的策略打擊。

螢幕快照 2012-09-02 下午10.33.13

 

再多補充幾個Strategy的範例。

螢幕快照 2012-09-02 下午10.39.38

螢幕快照 2012-09-02 下午10.39.49

 

Strategy實作結束之後,補充說明Strategy與Template Method以及State的相同與差異之處。

螢幕快照 2012-09-02 下午10.35.23

螢幕快照 2012-09-02 下午10.35.34

最後一個模式是Composite,當然也是有包含程式實作。

螢幕快照 2012-09-02 下午10.42.17

 

最後幫這三天的課程做一個快速的總複習。

螢幕快照 2012-09-02 下午10.43.29

 

幫下次的進階班打個廣告。原本Teddy是把進階班安排在九月下旬,但是幾經思考,考慮到並不是每一位參加入門班的學員們都會繼續參加進階班,因此想說再開一次入門班之後再安排進階班的課程。

螢幕快照 2012-09-02 下午10.44.40

***

這次是Teddy第一次舉辦「設計模式實作班」(之前Teddy的設計模式授課方式都是單純的講課模式,沒有包含給學員在課堂上練習的時間),要求學員當場把模式實作出來。根據課後的問卷調查,大部分的學員們都認為課程包含實作的這種安排會比較好。課程中的所有範例都是Teddy自己設計且自己動手實作過一次。在設計每一個模式的程式範例時,Teddy的想法是儘量讓每一個例子可以各自獨立(跟在Scrum中撰寫story的精神一樣…XD),以免有學員萬一在某次練習中卡住,因為範例的相依性太高,導致之後的練習不容易繼續進行下去。有學員在課後的問卷中,希望Teddy能夠安排一個單一的例子,可以套用到這三天所教授的這11個設計模式。關於範例設計的問題Teddy會持續的改進,找出一個可以有連貫性,但是又不會讓學員卡住的方法。

關於這次的課程設計,Teddy做了一個小小的實驗,就是在真正講授設計模式之前,花了四個小時的時間,說明軟體設計的本質以及模式和模式語言(pattern and pattern language)的原理。很多學員向Teddy反應,加上這些說明,尤其是解釋pattern原理(不是design pattern,而是Christopher Alexander在The Timeless Way of Building中所談論的pattern),讓他們對於pattern方法的應用,以及之後了解design pattern很有幫助(課堂中有一位學員上課之前完全不知道design pattern是什麼,上完三天課之後覺得自己變成pattern高手…挑眉質疑)。

這個週末Teddy都在思考這個問題,想把「介紹pattern與練習pattern寫法」這個部分的教材獨立出來變成一個2~3小時左右的工作坊(不是程式實作,而是經過Teddy介紹pattern原理之後,練習在30分鐘之內自己寫出一個pattern的活動)。工作坊的教材Teddy已經整理得差不多了,活動應該會辦在九月中下旬平日(週一到週五)的晚上。這個工作坊和軟體設計沒有關係,任何背景的人,只要對於pattern有興趣,都可以參加。這幾天Teddy就會公布這個活動的時間與報名資訊,有興趣的鄉民們敬請期待。此工作坊保證全台灣只有一處,別無分號…XD

***

友藏內心獨白:感謝所有來參加此次課程的學員們 向右擁抱向左擁抱

沒有留言:

張貼留言