Sept. 02 22:11~23:24
練習Command模式中。
耶,今天pair programming的對象怎麼換人了?
***
第三天的課程先從Command模式開始。
GoF對於Command的解釋,重點的第一句記起來:「Encapsulate a request as an object」。
不只光會用,也要知道如何測試。
這個Command的例子是Teddy特別設計過的,實作結束之後就順便完成了一個簡單的Plugin架構雛形。
接下來是Adapter模式介紹,除了解釋Class Adapter、Object Adapter以外,最重要的還是要介紹Pluggable Adapter。
介紹完Adapter之後剛好吃午飯。下午從Strategy開始,程式練習的例子是棒球選手依據教練指示上場以特定的策略打擊。
再多補充幾個Strategy的範例。
Strategy實作結束之後,補充說明Strategy與Template Method以及State的相同與差異之處。
最後一個模式是Composite,當然也是有包含程式實作。
最後幫這三天的課程做一個快速的總複習。
幫下次的進階班打個廣告。原本Teddy是把進階班安排在九月下旬,但是幾經思考,考慮到並不是每一位參加入門班的學員們都會繼續參加進階班,因此想說再開一次入門班之後再安排進階班的課程。
***
這次是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。
***
友藏內心獨白:感謝所有來參加此次課程的學員們 。
沒有留言:
張貼留言