# 設計模式的起源 ###### tags: `Design Patterns` `book` 在1994年由四位作家: Erich Gamma, Richard Helm, Ralph Johnson, John Vlissidesr共同發表的著作—《設計模式(Design Patterns)》,替物件導向程式設計畫上了新頁。從此之後,設計模式(Design Patterns)一詞,在軟體設計行業內廣為流傳,而這最初的四個作者,也被人暱稱為四人幫(GoF: Gang of Four)。 那什麼是模式(Pattern)呢?模式(Pattern)一詞最早源自於建築業中(在四人幫的設計模式一書中也提及這一段, Christopher Alexander說:「每一種模式都在說明一個一再出現的問題,並描述解決方案的核心,讓你能夠據以變化,產生出各種招式,來解決上萬個類似的問題」。 設計模式(Design Patterns)的作者們,將使用在「硬體」建築業中的設計概念,導入到純腦力的「軟體」設計業中,將軟體程式設計引導到一個更為「系統性分析」的工作行業上。物件導向程式設計方法中強調的是:以類別、物件、繼承、組合、作為軟體設計分析的方式。所以程式設計師在實作的過程中,必須將軟體功能拆分成不同的類別/元件,之後再將這些不同的類別/元件加以組裝、堆疊來完成軟體的實作。 隨著時間的發展,物件導向程式設計已成為主流的軟體開發方法,同時軟體系統也越來越複雜及多元化,小至智慧型手機上的App應用程式,大至涵蓋全球的社群網站,幾乎融入了每一個人的生活範圍之中。而多樣性的軟體功能應用,使得程式設計師在使用物件導向程式語言時也增加了許多挑戰,像是如何將軟體功能做切分、減少功能之間的重複、有效地連結不同功能……,都不斷考驗著程式設計師的系統分析及實作能力。 所以,透過引入「模式」的概念,讓軟體設計也能像建築設計一樣,可以透過經驗累計的方式,將一些經常用來解決特定情況的「類別設計」、「物件組裝」加以整理並定義成為一個「設計模式」。而這些「軟體的設計模式」,讓開發者在往後遇到相同的情況時,可以從中找出對應的解決方法直接應用,不必再去思考如何分析及設計。這麼一來,除了能夠減少不必要的時間花費之外,也能加強軟體系統的「穩定性」及「可維護性」。