許多人應(yīng)該聽過設(shè)計模式(Design pattern),或多或少地看到或使用過設(shè)計模式,但是在開發(fā)過程中的實際使用總是感覺沒有足夠的力量。設(shè)計模式必須是對設(shè)計模式的輕微偏離或理解不足。當然也有許多人沒有聽說過設(shè)計模式,今天我們這里不討論特定的模型,先來看看具體的設(shè)計模式到底是什么?設(shè)計模式的表述格式怎么劃分的?
設(shè)計模式是什么?
設(shè)計模式(英語 design pattern)是對面向?qū)ο笤O(shè)計中反復(fù)出現(xiàn)的問題的解決方案。這個術(shù)語是在1990年代由Erich Gamma等人從建筑設(shè)計領(lǐng)域引入到計算機科學(xué)中來的。這個術(shù)語的含義還存有爭議。算法不是設(shè)計模式,因為算法致力于解決問題而非設(shè)計問題。設(shè)計模式通常描述了一組相互緊密作用的類與對象。設(shè)計模式提供一種討論軟件設(shè)計的公共語言,使得熟練設(shè)計者的設(shè)計經(jīng)驗可以被初學(xué)者和其他設(shè)計者掌握。設(shè)計模式還為軟件重構(gòu)提供了目標。
隨著軟件開發(fā)社群對設(shè)計模式的興趣日益增長,已經(jīng)出版了一些相關(guān)的專著,定期召開相應(yīng)的研討會,而且Ward Cunningham為此發(fā)明了WikiWiki用來交流設(shè)計模式的經(jīng)驗。
設(shè)計模式的表述格式怎么劃分的?
表述一個軟件設(shè)計模式的格式根據(jù)作者的不同,劃分和名稱等都會有所不同。常用的描述模式的格式大致分為以下這些部分:
模式名:每一個模式都有自己的名字,模式的名字使得我們可以討論我們的設(shè)計。
問題:在面向?qū)ο蟮南到y(tǒng)設(shè)計過程中反復(fù)出現(xiàn)的特定場合,它導(dǎo)致我們采用某個模式。
解決方案:上述問題的解決方案,其內(nèi)容給出了設(shè)計的各個組成部分,它們之間的關(guān)系、職責劃分和協(xié)作方式。
別名:一個模式可以有超過一個以上的名稱。這些名稱應(yīng)該要在這一節(jié)注明。
動機:在哪種情況使用該模式,是本節(jié)提供的方案(包括問題與來龍去脈)的責任。
適用性:模式適用于哪些情況、模式的背景等等。
結(jié)構(gòu):這部分常用類圖與交互圖闡述此模式。
參與者:這部分提供一份本模式用到的類與對象清單,與它們在設(shè)計下扮演的角色。
合作:描述在此模式下,類與對象間的交互。
影響:采用該模式對軟件系統(tǒng)其他部分的影響,比如對系統(tǒng)的擴充性、可移植性的影響。影響也包括負面的影響。這部分應(yīng)描述使用本模式后的結(jié)果、副作用、與權(quán)衡(trade-off)。
實現(xiàn):這部分應(yīng)描述實現(xiàn)該模式、該模式的部分方案、實現(xiàn)該模式的可能技術(shù)、或者建議實現(xiàn)模式的方法。
示例:簡略描繪出如何以編程語言來使用模式。
已知應(yīng)用:業(yè)界已知的實現(xiàn)示例。
相關(guān)模式:這部分包括其他相關(guān)模式,以及與其他類似模式的不同。
上述就是關(guān)于設(shè)計模式是什么,以及設(shè)計模式的表述格式怎么劃分的全部內(nèi)容介紹,想了解更多關(guān)于設(shè)計模式的信息,請繼續(xù)關(guān)注中培偉業(yè)。