我說,Design Pattern 對軟體工程師而言,就像是在格鬥電玩裡頭所謂的「連續技」(Combo)那樣的東西。
你學會了開發工具的操作與程式語言,像是學會了如何使用搖桿上每個按鈕的功能,你開始接觸函式庫,像是選擇了要使用的角色,你學會某個函式如何使用,就像是學會了某個招式。
接下來,你發現將某些招式組合起來,可以發揮更大的威力,像是,如果你玩格鬥天王系列,就知道如果讓草薙京把對手踢到空中的時候,就可以施展大蛇薙,這,我們稱之為連續技;如果你平常就熟練這些連續技,又清楚出招的時機,經常可以有效傷害對方,取得不錯的成績。
Design Pattern 就是這些年來許多軟體工程師所整理出來,在某些情況下,你可以如何用某些方式組合函式與物件之間的關係,並且給了這些關係特定的名字,讓在你日復一日的開發工作中,在遇到某些類似的時機可以用上,而且提供了一套現成的詞彙,方便你說明你做了什麼,或是打算怎麼做某個東西。
有人問我會不會注重、應不應該注重 Design Pattern,這個問題實在有點奇妙…我還沒有看過多少人玩格鬥電玩不練連續技,但也沒有看到有人每次在對戰中,都非要把某套連續技施展出來不可。