軟體設計模式的一個很重要的目的,是為了因應未來需求的變動。如果評估在某地方未來如此變動的機會不高,就不應該在此採用考慮到異動需求的設計模式。所以過度設計與否,當下的判斷可能相當不準確。以Java Swing來說,很多地方會被認為是過度設計,但是當你需變動時,你卻會覺得它的設計真是有遠見。
我舉Swing當例子,是因為這是我體會比較深的設計框架。但是話說回來了,即使Swing這樣的設計,似乎思考得很周詳,但面對未來的新需求時(例如:GUI採用描述的方式,和程式邏輯分開),仍未必適合。面對這樣的現象,往往推出新的設計,放棄舊的包袱。(例如微軟WinForms到WPF的變化。)
