1. 程式人生 > 其它 >設計模式-設計模式概述

設計模式-設計模式概述

1,設計模式概述

1.1 軟體設計模式的產生背景

"設計模式"最初並不是出現在軟體設計中,而是被用於建築領域的設計中。

1977年美國著名建築大師、加利福尼亞大學伯克利分校環境結構中心主任克里斯托夫·亞歷山大(Christopher Alexander)在他的著作《建築模式語言:城鎮、建築、構造》中描述了一些常見的建築設計問題,並提出了 253 種關於對城鎮、鄰里、住宅、花園和房間等進行設計的基本模式。

1990年軟體工程界開始研討設計模式的話題,後來召開了多次關於設計模式的研討會。直到1995 年,艾瑞克·伽馬(ErichGamma)、理査德·海爾姆(Richard Helm)、拉爾夫·約翰森(Ralph Johnson)、約翰·威利斯迪斯(John Vlissides)等 4 位作者合作出版了《設計模式:可複用面向物件軟體的基礎》一書,在此書中收錄了 23 個設計模式,這是設計模式領域裡程碑的事件,導致了軟體設計模式的突破。這 4 位作者在軟體開發領域裡也以他們的“四人組”(Gang of Four,GoF)著稱。

1.2 軟體設計模式的概念

軟體設計模式(Software Design Pattern),又稱設計模式,是一套被反覆使用、多數人知曉的、經過分類編目的、程式碼設計經驗的總結。它描述了在軟體設計過程中的一些不斷重複發生的問題,以及該問題的解決方案。也就是說,它是解決特定問題的一系列套路,是前輩們的程式碼設計經驗的總結,具有一定的普遍性,可以反覆使用。

1.3 學習設計模式的必要性

設計模式的本質是面向物件設計原則的實際運用,是對類的封裝性、繼承性和多型性以及類的關聯關係和組合關係的充分理解。

正確使用設計模式具有以下優點。

  • 可以提高程式設計師的思維能力、程式設計能力和設計能力。
  • 使程式設計更加標準化、程式碼編制更加工程化,使軟體開發效率大大提高,從而縮短軟體的開發週期。
  • 使設計的程式碼可重用性高、可讀性強、可靠性高、靈活性好、可維護性強。

1.4 設計模式分類

  • 建立型模式
    用於描述“怎樣建立物件”,它的主要特點是“將物件的建立與使用分離”。GoF(四人組)書中提供了單例、原型、工廠方法、抽象工廠、建造者等 5 種建立型模式。
  • 結構型模式
    用於描述如何將類或物件按某種佈局組成更大的結構,GoF(四人組)書中提供了代理、介面卡、橋接、裝飾、外觀、享元、組合等 7 種結構型模式。
  • 行為型模式
    用於描述類或物件之間怎樣相互協作共同完成單個物件無法單獨完成的任務,以及怎樣分配職責。GoF(四人組)書中提供了模板方法、策略、命令、職責鏈、狀態、觀察者、中介者、迭代器、訪問者、備忘錄、直譯器等 11 種行為型模式。