「設計模式」這個術語最初被設計用於建築學領域。 Christopher Alexander 在他1977的著作「A Pattern Language :Towns/Building/Construction」裡面描述了一些常見的建築設計問題,並解釋瞭如何用這些已有的,著名的模式集合來開始全新的有效的設計。 Alexander的觀點被很好的轉化到軟體開發上來,並且長期的合意的用原有的組件來構造新的解決方案。
所有的設計模式都有一些常用的特性:一個識別(a name),一個問題陳述(a problem statement)和一個解決方案(a solution)。