Design Patterns

by winson, 10 months ago.

還記得當年捧著設計模式聖經挑燈夜戰的心路歷程嗎?還記得當年學設計模式的目的嗎?還記得設計模式告訴我們什麼嗎?喔,我差點忘了,他的特點是:
  • 重複使用設計過的軟體元件
  • 快速解決問題
  • 促進良好溝通
無論抱持什麼樣的目的,設計模式要做的就是用一致的解法,解決軟體設計上重複出現的問題,其實還是老話一句,不要重新發明輪子。

但,真的是這樣嗎?真的不用重新發明輪子嗎?有沒有想過設計模式真的有解決問題嗎?有沒有想過設計模式帶來的問題,其實多過他所解決的問題?老實說,

第一、設計模式最大的問題在於本身太過複雜。

事實上,我十分懷疑究竟有多少人看的懂物件導向設計模式這本書,我寧可回歸最直覺、簡單的解法來解決問題。

第二、要是你不斷用同一個設計模式解決重複出現的問題,這代表什麼?這代表這個語言本身出了問題,你看看Façade

Façade當初是為了對付EJB過於龐大臃腫的架構而出現的,當然啦,這讓整個架構稍微簡單了一點點,但到頭來還不是一個功能一支Façade,深入去看看程式,你覺得這有讓SQL語法變少嗎?並沒有吧。

別跟我說SQL是歸DAO管的,DAO是另一個十分嚴重的問題,那裡頭糊成一團,是DAO這團麵粉桿出了一堆義大利麪。

但那是沒辦法的,當年膨風過度的ORM,事實上窒礙難行,無論實務面或理論面,幾乎交錯混亂而演變成一場電腦科學界的越戰了。

所以這些設計模式解決了什麼問題?頂多創造出好幾個令人摸不著頭緒的新名詞吧。

軟體設計發展的太過複雜、太過疊樑架屋之後,於是就像電影侏羅紀公園講的,生命會找到出路(Life will find a way)。

於是開始回歸原點,開始反思如何運用POJO,如何運用Hibernate, Spring之類的方式來解決問題,可惜的是,無論採用哪種方式,背後還是堆砌過多的技術性與複雜性。

Groovy是一個好的開始,加油吧。

但我相信那條出路是Ruby On Rails。


  • Posted in Java, Rails, on Tuesday, September 11, 2007, at 12:40 AM.