March 24 21:30~23:01
假設鄉民們都知道design pattern是什麼東東,那麼對於pattern的定義應該不陌生:
A pattern is a proven solution to a recurring problem in a specific context.
翻成中文的意思就是說:一個樣式(pattern)是一個被已經被證明有用的解決方案(solution),可以用來解決在特定情境(context)之下重複出現的問題(problem)。挑出上面這個解釋裡面的粗體字,可以得到一個更簡化的解釋:
A pattern is a solution to a problem in a context.
樣式的格式有很多種寫法,但不管是那一種,一個樣式至少一定要包含Pattern Name,Solution,Problem,Context這四大部分(通常還有會Resulting Context或是Consequences)。Pattern Name,Solution,Problem這三個元素沒什麼好解釋的,一看就懂,但是Context就不太好了解。不容易解釋的問題交給Teddy就對了,請看以下例子。
Problem:肚子餓了晚餐要吃什麼?
Solution:可能的解決方案至少有以下幾種
- 清粥小菜
- 歐式自助餐
- 百元快炒
- 牛肉麵
- XX豆漿
- 義大利麵
- 日本料理
- 韓國泡菜鍋
- 燒烤
- 夜市小吃
請問鄉民們那一個solution比較好?這樣很其實很無厘頭,為什麼?因為Teddy根本沒有提供足夠的「背景資料(context)」來讓鄉民們回答這個問題啊。對了,少了「背景資料」光是知道問題本身是無法從眾多可能的答案中挑選一個真正合適的答案。假設Teddy告訴鄉民們以下三種不同的背景資料:
- 連續「落屎(拉肚子)」三天
- 邀請國外來的友人體驗台灣風土民情
- 部門聚餐
知道了背景資料之後,就比較容易判斷那一個解決方案比較合適,例如:
- 連續「落屎(拉肚子)」三天:清粥小菜
- 邀請國外來的友人體驗台灣風土民情:牛肉麵或夜市小吃
- 部門聚餐:歐式自助餐或百元快炒
如果能夠更進一步提供更多、更詳細的背景資料,將可以助於挑選更合適的解決方案,例如:
- 邀請國外來的友人體驗台灣風土民情,遇到下雨:吃牛肉麵(下雨逛夜市比較不方便)
- 部門聚餐每人預算只有一百五十元:百元快炒
如果鄉民們仔細的研究pattern,應該會發現有一些pattern的problem幾乎相同,但是卻有著截然不同的solution。答案很簡單,就是因為這些pattern的context不同,所以雖然遇到的問題很像,但是卻需要不同的解法。如果要用一句成語來形容,可以說是「因地制宜」吧。
甚麼,這樣子還不懂。等一下,Teddy去拿根棍子先…@_@。
***
友藏內心獨白:Pattern不是那麼容易學滴。
沒有留言:
張貼留言