[035] 再談設計範式(Design Pattern)

(又遲了,慚愧)

有些設計範式讓我一見傾心,其中之一是 Factory Method。我對於這個範式的理解如下:

「製造」與「使用」物件的責任應分離。工廠專責生產,客人只想使用服務,沒興趣知道東西怎麼做出來的。

散佈各處的 new Foo(x,y,z) 維護修改易出錯,感覺不踏實。由「生產地」集中出貨,需求有變,調整產線,有機會在不影響「客人」的情況下滿足需求變更。

沒接觸範式前,似乎有感覺這樣做比較好,看到「工廠範式」後晃然大悟,進一步理解發現其中的諸多變化,感覺功力大進(這當然是自我感覺良好,啊不然咧)。

把範式當工具,納入「御用工具箱」,時不時整理一翻,以便適當時機取出來用。工具箱內的寶物越多,解決問題的能力就越強。

前輩說,整理好的範式有助於溝通,「這裡可以使用『Command Pattern』,然後...」,雙方的工具箱裡皆有 Design Pattern,則溝通效率可獲得提昇,怎麼會是壞事呢?

此外,我認為除了有助溝通,還對自我學習有幫助。一旦理解了範式的應用與實作,即可以更高的抽象層次去模塑問題,「這裡可以套用 Visitor Pattern,稍做修改後,程式碼大概會是這樣...」「咦?不對,其實只要套用 Command Pattern,微調,簡單又明瞭。」

就像數學符號,把複雜的推導與證明濃縮成單一字符,然後再利用這些「工具」來證明更複雜的問題。有助於人類進步與發展的工具怎麼會是壞事呢?

設計範式是工具,不只是一堆「名詞」,更不應該被當做不可侵犯的「教條」。不懂或沒聽過設計範式不是罪,接受前人好處的你有責任把好用的工具分享給更多人,人越多,力量越強,彼此溝通更有效率。

用錯誤的心態嚇跑「戰友」,對得起前輩嗎你!