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