設計模式是指能夠重複利用的軟體設計方式,這些模式是經驗與智慧的結晶,能夠有效解決常見的軟體設計問題。
設計模式這一用語最早源自於建築學家 Christopher Alexander,他在著作中使用這一詞彙來描寫關於建築和城市設計領域的常見問題與解決方案。隨後,這一概念被引入軟體工程領域,四人幫 (GoF) 發表了《設計模式》一書將軟體設計中的常見問題和解決方案集結成冊。
《設計模式》一書將各項模式根據所解決的問題分為三類:
設計模式並非一塵不變的軟體設計公式,它們比較像是一種設計思維,引導你快速地分析並解決問題。一項成熟的模式具備完整的定義,像是上下文、面對的問題與建議的解決方案,使開發者了解該模式的使用情境與目的,在不同的開發情境中做出正確的抉擇。
設計模式不僅是程式設計手法,更是一種程式設計領域的共通語言,能夠促進程式設計師們溝通想法、闡明理念。學習設計模式不僅有助於撰寫系統化的程式,更能增進對他人程式碼的理解,進而掌握背後的設計理念。
儘管設計模式擁有許多優點,並非任何問題都適合導入設計模式。盲目地使用設計模式可能會為程式添加不必要的複雜度,不合適的模式則可能會帶來反效果。開發者應該在導入設計模式之前,理性地分析眼前的問題,評估模式的適用性,才能發揮這些模式的真正價值。