May 19 09:06~09:07
打個廣告先,6月份【Design Patterns入門實作班】早鳥優惠到5/24日,歡迎有興趣的朋友一起來進入Alexander的pattern世界與實作GoF的設計模式。
***
前情提要:
- 〈什麼是Pattern(1):第一個例子〉
- 〈什麼是Pattern(2):修正Problem〉
- 〈什麼是Pattern(3):修正Solution〉
- 〈什麼是Pattern(4):修正Context〉
***
不知道鄉民們是否覺得範例4比起之前的版本已經清楚許多?如果僅是根據Pattern定義4來評斷,範例4算是跨越及格標準。但是Teddy要進一步追問,難道pattern的內涵就僅是Context、Problem、Solution而已嗎?
Pattern定義5:A pattern is a proven solution to a recurring problem in a specific context, and more(模式是在一個特定情境之下,針對一個重複發生問題的成熟解決方案,和更多。)
鄉民甲:…, and more?這算是什麼爛定義啊。
***
Pattern的格式有很多種,Teddy採用的是以下包含六個元素的格式:
- Name:模式名稱,增加開發者的設計字彙。
- Context:描述問題發生的地形地物。
- Problem:描述問題本身。
- Force:作用力,用來指出問題的限制或特性。
- Solution:解決方案。
- Resulting Context:又稱為consequence,套用解決方案之後的結果。
六個元素之中的Context、Problem與Solution都已經介紹過了,接下來解釋其他三個元素。首先討論Force,它是這六個元素中最抽象也最難解釋的一個,因為它看不到,摸不著,只能「用心體會」,藉由觀察Solution來推敲Force。
Alexander在他的書中用不同的講法來解釋pattern。首先看到圖2的說法,這個講法和圖GoF的講法一致(A pattern is a solution to a problem in a context),只提到Context、Problem和Solution。
圖3是Alexander書中對於pattern的另一種敘述。在這個敘述中,Problem這個元素不見了,取而代之的是Force。
Force告訴我們為什麼pattern所要解決的「問題」是一個真正的問題。為什麼這個問題很難?為什麼需要一個聰明的,甚至是違反直覺的解決方案?Force也是了解為何會採用此種解決方案的關鍵 [POSA5]。Force是pattern很重要的一個元素,簡而言之它讓Problem更明確,也讓Solution 更加完整與成形。
考慮Force這個元素,將範例4改寫為範例5。請問,範例5是一個好的pattern嗎?(範例3-5
***
友藏內心獨白:觀察Force的能力真的很重要。
沒有留言:
張貼留言