設計模式之模式概述

2021-10-01 10:55:25 字數 1969 閱讀 1570

本文參考(學習的同時做一下筆記方便以後的檢視和複習。

「設計模式」這個術語最初並不是出現在軟體設計中,而是被用於建築領域的設計中。

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

1979 年他的另一部經典著作《建築的永恆之道》(the timeless way of building)進一步強化了設計模式的思想,為後來的建築設計指明了方向。

1987 年,肯特·貝克(kent beck)和沃德·坎寧安(ward cunningham)首先將克里斯托夫·亞歷山卓的模式思想應用在 smalltalk 中的圖形使用者介面的生成中,但沒有引起軟體界的關注。

直到 1990 年(,軟體工程界才開始研討設計模式的話題,後來召開了多次關於設計模式的研討會。

1995 年,艾瑞克·伽馬(erichgamma)、理察·海爾姆(richard helm)、拉爾夫·約翰森(ralph johnson)、約翰·威利斯迪斯(john vlissides)等 4 位作者合作出版了《設計模式:可復用物件導向軟體的基礎》(design patterns: elements of reusable object-oriented software)一書,在本教程中收錄了 23 個設計模式,這是設計模式領域里程碑的事件,導致了軟體設計模式的突破。這 4 位作者在軟體開發領域裡也以他們的「四人組」(gang of four,gof)匿名著稱。

直到今天,狹義的設計模式還是 23 種經典設計模式。

有關軟體設計模式的定義很多,有些從模式的特點來說明,有些從模式的作用來說明。

軟體設計模式的概念

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

學習設計模式的意義

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

當然,軟體設計模式只是乙個引導。在具體的軟體開發中,必須根據設計的應用系統的特點和要求來恰當選擇。對於簡單的程式開發,可能寫乙個簡單的演算法要比引入某種設計模式更加容易。但對大專案的開發或者框架設計,用設計模式來組織**顯然更好。

軟體設計模式使人們可以更加簡單方便地復用成功的設計和體系結構,它通常包含以下幾個基本要素:模式名稱、別名、動機、問題、解決方案、效果、結構、模式角色、合作關係、實現方法、適用性、已知應用、例程、模式擴充套件和相關模式等,其中最關鍵的元素包括以下 4 個主要部分。

模式名稱

每乙個模式都有自己的名字,通常用一兩個詞來描述,可以根據模式的問題、特點、解決方案、功能和效果來命名。模式名稱(patternname)有助於我們理解和記憶該模式,也方便我們來討論自己的設計。

問題問題(problem)描述了該模式的應用環境,即何時使用該模式。它解釋了設計問題和問題存在的前因後果,以及必須滿足的一系列先決條件。

解決方案

模式問題的解決方案(solution)包括設計的組成成分、它們之間的相互關係及各自的職責和協作方式。因為模式就像乙個模板,可應用於多種不同場合,所以解決方案並不描述乙個特定而具體的設計或實現,而是提供設計問題的抽象描述和怎樣用乙個具有一般意義的元素組合(類或物件的 組合)來解決這個問題。

效果描述了模式的應用效果以及使用該模式應該權衡的問題,即模式的優缺點。主要是對時間和空間的衡量,以及該模式對系統的靈活性、擴充性、可移植性的影響,也考慮其實現問題。顯式地列出這些效果(consequence)對理解和評價這些模式有很大的幫助。

C 設計模式 之 設計模式概述

一,為什麼學習設計模式?二,什麼是設計模式?三,怎麼描述設計模式?四,設計模式有哪幾類?五,設計模式之間的關係?六,學習設計模式的四種狀態 作為攻城獅 設計模式 這個詞應該都不陌生,那麼,你有靜下心來系統的學習它一下嗎?本系列博文描述了物件導向設計模式的實現。之所以取名為 c 設計模式,是因為我在文...

設計模式(一) 設計模式概述

模擬建築學 質量可以客觀評價 我們可以得到設計模式背後的觀點 軟體系統的質量可以客觀度量。模式的描述 模式的名稱 模式的目的,即要解決的問題 實現方法 為了實現該模式我們必須考慮的限制和約數因素 gof 四人幫 的工作是將已有的模式識別出來。而非創造 模式的關鍵特徵 專案描述 名稱每個模式都有唯一用...

設計模式概述

什麼是設計模式?通常會有以下幾個定義 設計模式描述了軟體設計過程中某一類常見問題的一般性解決方案。物件導向設計模式描述了物件導向設計過程中,特定場景下,類與相互通訊的物件之間常見的組織關係。每乙個模式描述了乙個在我們周圍不斷重 生的問題,以及該問題的解決方案的核心。這樣,你就能一次又一次的使用該方案...