l

2012年8月27日 星期一

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

August 26 22:35~August 27 00:14

螢幕快照 2012-08-27 上午12.25.01

 

8月25日星期六是「Design Patterns這樣學就會了:入門實作班」第一天上課,此次報名的學員比Teddy原先預期的要多,有兩位還遠從高雄北上來上課,這也是出乎Teddy原本的預料之外(因為Scrum的課程都沒有南部來的朋友啊…挑眉質疑)。

學pattern方法十幾年,Teddy覺得光是講GoF書中的pattern,雖然對學習軟體設計非常有幫助,但如果僅止於知道GoF書中的pattern,並不足以發揮Alexander原本「pattern」和「pattern language」的威力,所以Teddy特別在這次的課程中,花了四個小時的時間,從「什麼是軟體設計的產出物」這個問題開始談起,然後以一個一般鄉民都看得懂的例子,一步、一步帶領學員,透過說明下面這個觀念,進入pattern的世界。

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

 

這個pattern的例子一開始長成這樣。

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

 

改到第5.1版之後,變成這樣(還沒改完喔)。

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

 

把例子講完之後,再仔細說明與分析pattern六大元素之間的奧妙關係,學員們在30分鐘之內就有能力寫出一個pattern出來。

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

 

寫得好認真啊 很棒

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

 

接著Teddy解釋一個很重要的觀念,為什麼要學pattern(這裡所說的pattern,不是GoF的Design Patterns,而是Alexander在The Timeless Way of Building一書中所談的pattern喔)?。Pattern是一種思考與解決複雜問題的方法,可以幫助鄉民們從「加班到死的programmer」,慢慢轉變成「programmer」、「designer」、「architect」的一個過程。這種pattern方法的核心精神,可以應用在各種不同的領域之中。

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

 

以上內容就算是不會寫程式的人來聽,都可以理解並且實際應用pattern來作為一種思考與設計的工具。所以之後Teddy會將這部分的內容獨立出來,單獨開一門介紹如何使用Pattern來作為思考與設計工具的課程。

***

接下來的內容慢慢轉移到軟體身上,先講物件導向設計觀念。

物件導向的觀念Teddy講了可能快有20年的時間了(比學pattern的歷史還要長久啊)。光看這兩張投影片可能會覺得沒什麼,現場聽完之後,保證會讓很多人懷疑:「我以前學過的東西,真的是物件導向的觀念嗎?」

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

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

接下來就進入GoF的design pattern範圍,第一天介紹的是Singleton與Observer,當場要把程式給寫出來。

(迷之音:JUnit的jar檔放在哪裡…Orz)

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

***

第一天課程結束之後,Teddy覺得教這個Design Pattern的課比上Scrum還要累大概5倍以上啊(所以日後學費也要乘以5)。已經有好一陣子沒有體會到武俠小說「射鵰英雄傳」中,「一燈大師」幫「黃蓉」治療內傷之後,那種虛脫的感覺了…Orz。不過說真的,Scrum的確比pattern要容易了解太多了(雖然要把兩者都學好,個別來講都是很高難度的一件事)。

來上這門課的學員,有好幾位在工作上是用C在寫程式,對於物件導向的觀念並不是很熟。也有工作上使用C++、Python和Delphi的學員,但是基本上在課堂上並沒有遇到什麼嚴重的困難,這也是讓Teddy感到很高興的一點(因為之前Teddy有「放話」,只要曾經會寫程式,對於pattern有興趣的人,都可以來上這門課,沒有限定要對Java或是物件導向很熟悉才可以學)。

***

友藏內心獨白:還是要花時間寫一本《設計模式的逆襲》,讓沒錢上課的學員可以自己買書回家看?!

1 則留言: