Jan. 1 10:20~11:20
上禮拜五Scrum公開班課程的第一天中午吃飯時間,有一位學員找Teddy聊天。原本以為他要問Scrum問題,結果居然一個Scrum問題也沒問,都在談Design Pattern。
這位學員是團隊主管,他告訴Teddy想在團隊中推廣Design Pattern的使用,也讓團隊成員閱讀GoF Design Pattern然後輪流報告。在團隊學員報告的過程中,遇到一些問題,於是利用上Scrum的機會找Teddy討論。
這位學員問的問題,簡單的說和很多學習Design Pattern的鄉民會遇到的問題一樣,就是「只從solution的角度來看pattern」,因此很容易產生諸如:
- 套用Singleton等於使用全域變數,那我改用Service Locator是不是比較好?
- Visitor pattern去拜訪一個物件結構,如果只拜訪一個物件,是不是也算Visitor?
上面這兩個例子鄉民們比較不容易理解,舉兩個容易懂得例子:「請問感冒藥、鼻子過敏藥、香灰這三種pattern,我套哪一個比較好?」「我感冒流鼻水,吃鼻子過敏藥也可以抑制冒流鼻水,那我是不是可以說鼻子過敏藥也是ㄧ種感冒藥?」
什麼是模式?A pattern is a proven solution to a recurring problem in a specific context.(模式是在一個特定情境下針對重複出現問題的成熟解決方案)所以學習pattern不能只看解決方案(solution),就好像生病不能看到藥就拿來吃一樣。還要了解問題(因為感冒流鼻水,還是因為過敏,還是其他原因),以及問題發生的情境、脈絡(你正在工作中還是準備睡覺?你是卡車司機、學生,還是正要出門約會的女生?),才能夠依此選擇合適的解決方案。
看到這邊可能鄉民們已經頭暈了,但還沒完。如果套了pattern之後水土不服怎麼辦?有副作用怎麼辦?原本的問題沒有解得很乾淨怎麼辦?相較於學會單一pattern的實作方法(只知道solution),了解context、problem、solution、resulting context(套用pattern之後的結果)這些元素之間的關係,才是學會並活用pattern的重點。
***
廣告台詞寫完,接下來要打廣告。2016年第一梯「Design Patterns這樣學就會了入門實作班」開放報名,上課日期為3月5、6、12 4月16、17、23(六、日、六)。入門班課程重點包含:
- 軟體設計與設計的產出物
- Pattern的六大元素(Context、Problem、Force、Solution、Resluting Context)
- 動手寫自己的Pattern
- 套用Pattern的流程
- 基礎物件導向觀念
- 10個常用GoF設計模式:包含State、Facade、Template Method、Factory Method、Abstract Factory、Observer、Command、Adapter、Strategy與Composite。
- 套用設計模式的原則,如何判斷套用的設計模式是否合適?
***
▼課程照片。
***
報名網址再貼一次:Design Patterns這樣學就會了:入門實作班,3月5、6、12 4月16、17、23(六、日、六)。
***
友藏內心獨白:學會套用Pattern的流程很重要。
小孩還小, 週末殘念..
回覆刪除建議先來學實務
回覆刪除實務有之後才學理論比較有踏實
有同感
刪除