軟件工程-設(shè)計(jì)模式種類_第1頁(yè)
軟件工程-設(shè)計(jì)模式種類_第2頁(yè)
軟件工程-設(shè)計(jì)模式種類_第3頁(yè)
軟件工程-設(shè)計(jì)模式種類_第4頁(yè)
軟件工程-設(shè)計(jì)模式種類_第5頁(yè)
已閱讀5頁(yè),還剩1頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

設(shè)計(jì)模式(\o"英語(yǔ)"英語(yǔ):designpattern)這個(gè)術(shù)語(yǔ)是在1990年代,由\o"ErichGamma(尚未撰寫)"ErichGamma等人,從\o"建筑設(shè)計(jì)"建筑設(shè)計(jì)領(lǐng)域引入到\o"計(jì)算機(jī)科學(xué)"計(jì)算機(jī)科學(xué)里去的。是對(duì)\o"軟件設(shè)計(jì)(尚未撰寫)"軟件設(shè)計(jì)中普遍存在(反復(fù)出現(xiàn))的各種問(wèn)題,所提出的解決方案。設(shè)計(jì)模式并不直接用來(lái)完成\o"程式碼"程式碼的編寫,而是描述在各種不同情況下,要怎么解決問(wèn)題的一種方案。\o"面向?qū)ο?面向?qū)ο笤O(shè)計(jì)模式通常以\o"類別"類別或\o"物件(計(jì)算機(jī)科學(xué))"物件來(lái)描述其中的關(guān)系和相互作用,但不涉及用來(lái)完成應(yīng)用程式的特定類別或物件。\o"算法"算法不能算是一種設(shè)計(jì)模式,因?yàn)樗惴ㄖ饕怯脕?lái)解決計(jì)算上的問(wèn)題,而非設(shè)計(jì)上的問(wèn)題。設(shè)計(jì)模式主要是使不穩(wěn)定的依賴于相對(duì)穩(wěn)定、具體依賴于相對(duì)抽象,避免會(huì)引起麻煩的緊耦合,以增強(qiáng)軟件設(shè)計(jì)面對(duì)并適應(yīng)變化的能力。并非所有的軟件模式都是設(shè)計(jì)模式,設(shè)計(jì)模式特指軟件設(shè)計(jì)層次上的問(wèn)題。還有其它非設(shè)計(jì)模式的模式,如\o"架構(gòu)模式(尚未撰寫)"架構(gòu)模式。隨著軟件開(kāi)發(fā)社群對(duì)設(shè)計(jì)模式的興趣日益增長(zhǎng),已經(jīng)出版了一些相關(guān)的專著,定期召開(kāi)相應(yīng)的研討會(huì),而且\o"WardCunningham(尚未撰寫)"WardCunningham為此發(fā)明了\o"WikiWiki"WikiWiki用來(lái)交流設(shè)計(jì)模式的經(jīng)驗(yàn)。發(fā)展歷史建筑師\o"克里斯托佛·亞歷山大"克里斯托佛·亞歷山大在1977/79年編制了一本匯集設(shè)計(jì)模式的書。但是這種設(shè)計(jì)模式的思想在建筑設(shè)計(jì)領(lǐng)域里的影響遠(yuǎn)沒(méi)有后來(lái)在軟件開(kāi)發(fā)領(lǐng)域里傳播的廣泛。\o"肯特·貝克(尚未撰寫)"肯特·貝克和\o"沃德·坎寧安"沃德·坎寧安在1987年,利用克里斯托佛·亞歷山大在建筑設(shè)計(jì)領(lǐng)域里的思想開(kāi)發(fā)了設(shè)計(jì)模式并把此思想應(yīng)用在Smalltalk中的圖形用戶接口的生成中。一年后ErichGamma在他的蘇黎世大學(xué)博士畢業(yè)論文中開(kāi)始嘗試把這種思想改寫為適用于軟件開(kāi)發(fā)。于此同時(shí)JamesCoplien在1989年至1991年也在利用相同的思想致力于C++的開(kāi)發(fā),而后于1991年發(fā)表了他的著作AdvancedC++Idioms。就在這一年ErichGamma得到了博士學(xué)位,然后去了美國(guó),在那與RichardHelm,RalphJohnson,JohnVlissides合作出版了DesignPatterns-ElementsofReusableObject-OrientedSoftware一書,在此書中共收錄了23個(gè)設(shè)計(jì)模式。這四位作者在軟件開(kāi)發(fā)領(lǐng)域里也以他們的匿名著稱GangofFour(四人幫,簡(jiǎn)稱GoF),并且是他們?cè)诖藭械膮f(xié)作導(dǎo)致了軟件設(shè)計(jì)模式的突破。有時(shí)這個(gè)匿名GoF也會(huì)用于指代前面提到的那本書。[表述格式表述一個(gè)軟件設(shè)計(jì)模式的格式根據(jù)作者的不同,劃分和名稱等都會(huì)有所不同。常用的\o"GoF(尚未撰寫)"GoF描述模式的格式大致分為以下這些部分:模式名:每一個(gè)模式都有自己的名字,模式的名字使得我們可以討論我們的設(shè)計(jì)。問(wèn)題:在\o"面向?qū)ο蟮南到y(tǒng)設(shè)計(jì)(尚未撰寫)"面向?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ī):該模式應(yīng)該利用在哪種情況下是本節(jié)提供的方案(包括問(wèn)題與來(lái)龍去脈)的責(zé)任。適用性:模式適用于哪些情況、模式的背景等等。結(jié)構(gòu):這部分常用類圖與互動(dòng)圖闡述此模式。參與者:這部分提供一份本模式用到的類與物件清單,與它們?cè)谠O(shè)計(jì)下扮演的角色。合作:描述在此模式下,類與物件間的互動(dòng)。影響:采用該模式對(duì)軟件系統(tǒng)其他部分的影響,比如對(duì)系統(tǒng)的擴(kuò)充性、可移植性的影響。影響也包括負(fù)面的影響。這部分應(yīng)描述使用本模式后的結(jié)果、副作用、與權(quán)衡(trade-off)實(shí)作:這部分應(yīng)描述實(shí)現(xiàn)該模式、該模式的部分方案、實(shí)現(xiàn)該模式的可能技術(shù)、或者建議實(shí)現(xiàn)模式的方法。示例:簡(jiǎn)略描繪出如何以編程語(yǔ)言來(lái)使用模式。已知應(yīng)用:業(yè)界已知的實(shí)作范例。相關(guān)模式:這部分包括其他相關(guān)模式,以及與其他類似模式的不同。[\o"編輯段落:分類"編輯]分類\o"設(shè)計(jì)范例"《設(shè)計(jì)模式》一書原先把設(shè)計(jì)模式分為創(chuàng)建型模式,結(jié)構(gòu)型模式,行為型模式.把它們通過(guò)授權(quán),聚合,診斷的概念來(lái)描述.若想更進(jìn)一步了解關(guān)于面向?qū)ο笤O(shè)計(jì)的背景,參考接口模式,內(nèi)聚.若想更進(jìn)一步了解關(guān)于面向?qū)ο缶幊痰谋尘?參考\o"繼承(計(jì)算機(jī)科學(xué))"繼承,接口,多態(tài).模式名稱描述是否在\o"設(shè)計(jì)范例"《設(shè)計(jì)模式》是否在\o"代碼大全(尚未撰寫)"《代碼大全》[1]\o"創(chuàng)建型模式(尚未撰寫)"創(chuàng)建型模式\o"抽象工廠模式"抽象工廠模式為一個(gè)產(chǎn)品族提供了統(tǒng)一的創(chuàng)建接口。當(dāng)需要這個(gè)產(chǎn)品族的某一系列的時(shí)候,可以從抽象工廠中選出相應(yīng)的系列創(chuàng)建一個(gè)具體的工廠類。是是\o"工廠方法模式"工廠方法模式定義一個(gè)接口用于創(chuàng)建對(duì)象,但是讓子類決定初始化哪個(gè)類。工廠方法把一個(gè)類的初始化下放到子類。是是\o"生成器模式"生成器模式將一個(gè)復(fù)雜對(duì)象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過(guò)程可以創(chuàng)建不同的表示。是否\o"懶惰初始化模式(尚未撰寫)"懶惰初始化模式推遲對(duì)象的創(chuàng)建、數(shù)據(jù)的計(jì)算等需要耗費(fèi)較多資源的操作,只有在第一次訪問(wèn)的時(shí)候才執(zhí)行。否否\o"對(duì)象池模式"對(duì)象池模式通過(guò)回收利用對(duì)象避免獲取和釋放資源所需的昂貴成本。否否\o"原型模式"原型模式用原型實(shí)例指定創(chuàng)建對(duì)象的種類,并且通過(guò)拷貝這些原型創(chuàng)建新的對(duì)象。是否\o"單例模式"單例模式確保一個(gè)類只有一個(gè)實(shí)例,并提供對(duì)該實(shí)例的全局訪問(wèn)。是是\o"結(jié)構(gòu)型模式(尚未撰寫)"結(jié)構(gòu)型模式\o"適配器模式"適配器模式將某個(gè)類的接口轉(zhuǎn)換成客戶端期望的另一個(gè)接口表示。適配器模式可以消除由于接口不匹配所造成的類兼容性問(wèn)題。是是\o"橋接模式"橋接模式將一個(gè)抽象與實(shí)現(xiàn)解耦,以便兩者可以獨(dú)立的變化。是是\o"組合模式(尚未撰寫)"組合模式把多個(gè)對(duì)象組成樹(shù)狀結(jié)構(gòu)來(lái)表示局部與整體,這樣用戶可以一樣的對(duì)待單個(gè)對(duì)象和對(duì)象的組合。是是\o"修飾模式"修飾模式向某個(gè)對(duì)象動(dòng)態(tài)地添加更多的功能。修飾模式是除類繼承外另一種擴(kuò)展功能的方法。是是\o"外觀模式"外觀模式為子系統(tǒng)中的一組接口提供一個(gè)一致的界面,外觀模式定義了一個(gè)高層接口,這個(gè)接口使得這一子系統(tǒng)更加容易使用。是是\o"享元模式(尚未撰寫)"享元模式通過(guò)共享以便有效的支持大量小顆粒對(duì)象。是否\o"代理模式(尚未撰寫)"代理模式為其他對(duì)象提供一個(gè)代理以控制對(duì)這個(gè)對(duì)象的訪問(wèn)。是否\o"行為模式(尚未撰寫)"行為模式\o"責(zé)任鏈模式"責(zé)任鏈模式為解除請(qǐng)求的發(fā)送者和接收者之間耦合,而使多個(gè)對(duì)象都有機(jī)會(huì)處理這個(gè)請(qǐng)求。將這些對(duì)象連成一條鏈,并沿著這條鏈傳遞該請(qǐng)求,直到有一個(gè)對(duì)象處理它。是否\o"命令模式"命令模式將一個(gè)請(qǐng)求封裝為一個(gè)對(duì)象,從而使你可用不同的請(qǐng)求對(duì)客戶進(jìn)行參數(shù)化;對(duì)請(qǐng)求排隊(duì)或記錄請(qǐng)求日志,以及支持可取消的操作。是否\o"解釋器模式(尚未撰寫)"解釋器模式給定一個(gè)語(yǔ)言,定義它的文法的一種表示,并定義一個(gè)解釋器,該解釋器使用該表示來(lái)解釋語(yǔ)言中的句子。是否\o"迭代器模式(尚未撰寫)"迭代器模式提供一種方法順序訪問(wèn)一個(gè)聚合對(duì)象中各個(gè)元素,而又不需暴露該對(duì)象的內(nèi)部表示。是是\o"Mediatorpattern(尚未撰寫)"MediatorDefineanobjectthatencapsulateshowasetofobjectsinteract.Mediatorpromotesloosecouplingbykeepingobjectsfromreferringtoeachotherexplicitly,anditletsyouvarytheirinteracti

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論