![設(shè)計(jì)模式論文_第1頁(yè)](http://file4.renrendoc.com/view/b0dc7c0d91d8db72ad615d27fc0fa7d8/b0dc7c0d91d8db72ad615d27fc0fa7d81.gif)
![設(shè)計(jì)模式論文_第2頁(yè)](http://file4.renrendoc.com/view/b0dc7c0d91d8db72ad615d27fc0fa7d8/b0dc7c0d91d8db72ad615d27fc0fa7d82.gif)
![設(shè)計(jì)模式論文_第3頁(yè)](http://file4.renrendoc.com/view/b0dc7c0d91d8db72ad615d27fc0fa7d8/b0dc7c0d91d8db72ad615d27fc0fa7d83.gif)
![設(shè)計(jì)模式論文_第4頁(yè)](http://file4.renrendoc.com/view/b0dc7c0d91d8db72ad615d27fc0fa7d8/b0dc7c0d91d8db72ad615d27fc0fa7d84.gif)
![設(shè)計(jì)模式論文_第5頁(yè)](http://file4.renrendoc.com/view/b0dc7c0d91d8db72ad615d27fc0fa7d8/b0dc7c0d91d8db72ad615d27fc0fa7d85.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
TOC\o"1-3"\h\u12916第一章設(shè)計(jì)模式的簡(jiǎn)介 2292661.1什么是設(shè)計(jì)模式 2125241.2設(shè)計(jì)模式的基本要素 2197591.3學(xué)習(xí)設(shè)計(jì)模式的重要性 2143701.4面向?qū)ο蟮奶卣?382611.4.1封裝 3297851.4.2繼承 3318271.4.3多態(tài) 36840第二章面向?qū)ο蟮膸讉€(gè)基本原則 450542.1面向抽象原則 416632.2“開-閉”原則 4177762.3“多用組合,少用繼承”原則 4289152.4“高內(nèi)聚-弱耦合”原則 527540第三章設(shè)計(jì)模式分類 586153.1行為型模式 5300103.2結(jié)構(gòu)型模式 587143.3創(chuàng)建型模式 6189943.4工廠模式情景舉例 657283.4.1設(shè)計(jì)要求 6129533.4.2設(shè)計(jì)實(shí)現(xiàn) 712178第四章設(shè)計(jì)模式學(xué)習(xí)總結(jié) 102028致謝 101149參考文獻(xiàn) 11第一章設(shè)計(jì)模式的簡(jiǎn)介1.1什么是設(shè)計(jì)模式設(shè)計(jì)模式(Designpattern)是一套被反復(fù)使用、多數(shù)人知曉的、經(jīng)過(guò)分類編目的、代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)。使用設(shè)計(jì)模式是為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。設(shè)計(jì)面向?qū)ο筌浖容^困難,而設(shè)計(jì)可復(fù)用的面向?qū)ο筌浖透永щy,你必須先找出有關(guān)的對(duì)象,以適當(dāng)?shù)牧6葘⑺麄儦w類,在定義的接口和繼承類,建立對(duì)象之間的相互關(guān)系。你的設(shè)計(jì)應(yīng)該對(duì)手頭的問(wèn)題有針對(duì)性,同時(shí)對(duì)將來(lái)的問(wèn)題有足夠的通用性。設(shè)計(jì)出盡可能少的重復(fù)設(shè)計(jì)模式。有經(jīng)驗(yàn)的面向?qū)ο笤O(shè)計(jì)者能做出良好的設(shè)計(jì),二新手則面對(duì)眾多選擇無(wú)從下手。設(shè)計(jì)模式使人們可以更加簡(jiǎn)單方便地復(fù)用成功的設(shè)計(jì)和體系結(jié)構(gòu)。1.2設(shè)計(jì)模式的基本要素記錄一個(gè)設(shè)計(jì)模式需要4個(gè)基本要素:(1)名稱:一個(gè)模式的名稱高度包括該模式的本質(zhì),有利于該行業(yè)統(tǒng)一術(shù)語(yǔ)、便于交流使用。(2)問(wèn)題:描述應(yīng)該在何時(shí)使用模式,解釋設(shè)計(jì)問(wèn)題和問(wèn)題存在的前因后果,描述在怎樣的環(huán)境下使用該模式。(3)方案:描述設(shè)計(jì)的組成部分、他們之間的相互關(guān)系及各自的職責(zé)和協(xié)作方式。(4)效果:描述模式的應(yīng)用效果及使用模式應(yīng)該權(quán)衡的問(wèn)題。主要效果包括使用模式對(duì)系統(tǒng)的靈活性、擴(kuò)充性和復(fù)用性的影響。1.3學(xué)習(xí)設(shè)計(jì)模式的重要性一個(gè)好的設(shè)計(jì)系統(tǒng)往往是易維護(hù)、易擴(kuò)展、易復(fù)用的,學(xué)習(xí)好設(shè)計(jì)模式對(duì)提高設(shè)計(jì)能力無(wú)疑是非常有幫助的。設(shè)計(jì)模式的目的不是針對(duì)軟件設(shè)計(jì)和開發(fā)中的每個(gè)問(wèn)題都給出解決方案,而是針對(duì)某種特定環(huán)境中通常都會(huì)遇到的某種軟件開發(fā)問(wèn)題給出可用的一些解決方案,因此學(xué)習(xí)設(shè)計(jì)模式不僅可以使我們使用好這些成功的模式,更重要的是可以是我們更加深刻地理解面向?qū)ο蟮脑O(shè)計(jì)思想,非常有利于我們更好的使用面向?qū)ο笳Z(yǔ)言解決設(shè)計(jì)中的問(wèn)題。1.4面向?qū)ο蟮奶卣麟S著計(jì)算機(jī)硬件設(shè)備功能的進(jìn)一步提高,使得基于對(duì)象的編程成為可能(面向?qū)ο笳Z(yǔ)言編寫的程序需要消耗更多的內(nèi)存,需要更快的CPU保證其運(yùn)行速度)。基于對(duì)象的編程更加符合人的思維模式,使用面向?qū)ο笳Z(yǔ)言可以編寫易維護(hù)、易擴(kuò)展和易復(fù)用的程序代碼,更重要的是,面向?qū)ο缶幊坦膭?lì)創(chuàng)造性的程序設(shè)計(jì)。1.4.1封裝面向?qū)ο缶幊痰暮诵乃枷胫痪褪菍?shù)據(jù)核對(duì)數(shù)據(jù)的操作封裝在一起。通過(guò)抽象,即從具體的實(shí)例中抽取共同的性質(zhì)形成一般的概念比如,類的概念。1.4.2繼承繼承是一種由已有的類定義出新類的機(jī)制。利用繼承,可以先定義一個(gè)共有屬性的一般類,根據(jù)該一般類再定義具有特殊屬性的子類,子類繼承一般類的屬性和行為,并根據(jù)需要增加他自己的心得屬性和行為。由繼承而得到的類稱為子類,被繼承的類稱為父類(超類)。Java不支持多重繼承,即子類只能有一個(gè)父類(與C++不同)。1.4.3多態(tài)多態(tài)是面向?qū)ο缶幊痰挠忠环N重要特征。有兩種意義的多態(tài)。一種是操作名稱的多態(tài),即有多個(gè)操作具有相同的名字,但這些操作所接受的消息類型必須不同。所謂操作名稱的多態(tài)性,是指可以向操作傳遞不同的消息,以便讓對(duì)象根據(jù)響應(yīng)的消息來(lái)產(chǎn)生相應(yīng)的行為。另一種是和繼承有關(guān)的多態(tài),是指同一個(gè)操作被不同類型對(duì)象調(diào)用時(shí)可能產(chǎn)生不同的行為。第二章面向?qū)ο蟮膸讉€(gè)基本原則2.1面向抽象原則所謂面向?qū)ο缶幊?,是指?dāng)設(shè)計(jì)一個(gè)類時(shí),不讓該類面向具體的類,而是面向抽象類或接口,即所設(shè)計(jì)類中的重要數(shù)據(jù)是抽象類或接口聲明的變量,而不是具體類聲明的變量。2.2“開-閉”原則所謂“開-閉”原則,就是讓我們的設(shè)計(jì)對(duì)擴(kuò)展開放,對(duì)修改關(guān)閉。實(shí)際上這句話的本質(zhì)是指當(dāng)一個(gè)設(shè)計(jì)中增加新的模塊時(shí),不需要修改現(xiàn)有的模塊。在給出一個(gè)設(shè)計(jì)時(shí),應(yīng)當(dāng)首先考慮到用戶需求的變化,將應(yīng)對(duì)用戶變化的部分設(shè)計(jì)為對(duì)擴(kuò)展開放,而設(shè)計(jì)的核心部分是經(jīng)過(guò)精心考慮之后確定下來(lái)的基本結(jié)構(gòu),這部分應(yīng)當(dāng)是對(duì)修改關(guān)閉的,即不能因?yàn)橛脩舻男枨笞兓侔l(fā)生變化,因?yàn)檫@部分不是用來(lái)應(yīng)對(duì)需求變化的。如果一個(gè)設(shè)計(jì)遵守了“開-閉”原則,那么一定是易維護(hù)的,因?yàn)樵谠O(shè)計(jì)中增加新的模塊時(shí),不必去修改設(shè)計(jì)中的核心模塊。2.3“多用組合,少用繼承”原則在許多設(shè)計(jì)中,人們希望系統(tǒng)的類之間盡量使耦合關(guān)系,而不希望是強(qiáng)耦合關(guān)系。設(shè)計(jì)的底層結(jié)構(gòu)中通常會(huì)出現(xiàn)較多的繼承結(jié)構(gòu),而許多應(yīng)用層需要避開繼承的缺點(diǎn),而需要組合的優(yōu)點(diǎn)。要合理的使用組合,而不是使用繼承來(lái)獲得方法的復(fù)用,需要經(jīng)過(guò)一定時(shí)間的認(rèn)真思考、學(xué)習(xí)和編程實(shí)踐。2.4“高內(nèi)聚-弱耦合”原則如果類中的方法是一組相關(guān)的行為,則稱該類是高內(nèi)聚的,反之稱為低內(nèi)聚。高內(nèi)聚便于類的維護(hù),而低內(nèi)聚不利于類的維護(hù)。弱耦合就是盡量不要讓一個(gè)類含有太多的其他類的實(shí)力的引用,以避免修改系統(tǒng)的其中一部分會(huì)影響到其他部分。第三章設(shè)計(jì)模式分類3.1行為型模式行為型模式涉及怎樣合理的設(shè)計(jì)對(duì)象之間的交互通信,以及怎樣合理地為對(duì)象分配職責(zé),讓設(shè)計(jì)富有彈性、易維護(hù)、易復(fù)用。策略模式狀態(tài)模式命令模式中介者模式責(zé)任鏈模式模板方法模式觀察者模式訪問(wèn)者模式3.2結(jié)構(gòu)型模式結(jié)構(gòu)型模式涉及如何組合類和對(duì)象以形成更大的結(jié)構(gòu),和類有關(guān)的結(jié)構(gòu)型模式設(shè)計(jì)如何合理點(diǎn)的使用繼承機(jī)制,和對(duì)象有關(guān)的結(jié)構(gòu)型模式涉及如何合理的使用對(duì)象機(jī)制。裝飾模式組合模式適配器模式外觀模式代理模式享元模式橋接模式3.3創(chuàng)建型模式創(chuàng)建型模式涉及對(duì)象的實(shí)例化,這類模式的特點(diǎn)是:不讓用戶代碼依賴于對(duì)象的創(chuàng)建或排列方式,避免用戶直接使用new運(yùn)算符創(chuàng)建對(duì)象。工廠方法模式抽象工廠模式生成器模式原型模式單間模式3.4工廠模式情景舉例適合使用工廠方法模式的情景:用戶需要一個(gè)類的子類的實(shí)例,但不希望該類的子類形成耦合。用戶需要一個(gè)類的子類的實(shí)例,但用戶不知道該類有哪些子類可用。3.4.1設(shè)計(jì)要求系統(tǒng)目前已經(jīng)按照有關(guān)藥品的規(guī)定設(shè)計(jì)一個(gè)抽象類Drug,該抽象類特別規(guī)定了所創(chuàng)建的藥品必須給出藥品的成分及含量。Drug目前有兩個(gè)子類:Paracetamol和Amorolfine。Paracetamol子類負(fù)責(zé)創(chuàng)建氨咖黃敏一類的藥品;Amorolfine子類負(fù)責(zé)創(chuàng)建鹽酸阿莫羅芬一類的藥品。一個(gè)為某藥品開發(fā)的應(yīng)用程序需要使用Drug類的某個(gè)子類的實(shí)例為用戶提供藥品,但是藥店的應(yīng)用程序不能使用Drug的子類的構(gòu)造方法直接創(chuàng)建對(duì)象,因?yàn)樗幍隂](méi)有能力給出藥品的各個(gè)成分的含量,只有藥廠才有這樣的能力。請(qǐng)使用工廠方法模式偉已有系統(tǒng)編寫一個(gè)抽象類,并在其中定義工廠方法,該工廠方法返回Drug類的子類的實(shí)例。3.4.2設(shè)計(jì)實(shí)現(xiàn)1.抽象產(chǎn)品按照工廠方法模式,Drug類是工廠方法模式中的抽象產(chǎn)品角色,Drug類代碼:Drug.javapublicabstractclassDrug{Stringconstitute;Stringname;publicStringgetName(){returnname;}publicStringgetConstitute(){returnconstitute;}}2.具體產(chǎn)品按照工廠方法模式,Paracetamol類和Amorolfine類是產(chǎn)品角色,Drug類代碼:Paracetamol.javapublicclassParacetamolextendsDrug{Stringpart1="每粒含乙酰氨基酚";Stringpart2="每粒含咖啡因";Stringpart3="每粒含人工牛黃";Stringpart4="每粒含馬來(lái)酸氯苯";publicParacetamol(Stringname,int[]a){=name;part1=part+":"+a[0]+"毫克\n";part2=part+":"+a[1]+"毫克\n";part3=part+":"+a[2]+"毫克\n";part4=part+":"+a[3]+"毫克\n";constitute=part1+part2+part3+part4;}}Amorolfine.javapublicclassAmorolfineextendsDrug{Stringpart1="每粒含甲硝唑";Stringpart2="每粒含人工牛黃";publicAmorolfine(Stringname,int[]a){=name;part1=part+":"+a[0]+"毫克\n";part2=part+":"+a[1]+"毫克\n";constitute=part1+part2;}}構(gòu)造者按照工廠方法模式,我們編寫了擔(dān)當(dāng)構(gòu)造者角色的接口:DrugCreator,代碼如下:DrugCreator.javapulicinterfaceDrugCreator{publicabstractDruggetDrug();//工廠方法}具體構(gòu)造者按照工廠方法模式,ParaDrugCreator類和AmorDrugCreator類是兩個(gè)具體構(gòu)造者角色,代碼如下:ParaDrugCreator.javapublicclassParaDrugCreatorimplementsDrugCreator{publicDruggetDrug(){int[]a={250,15,1,10};Drugdrug=newParacetamol("氨加黃敏膠囊",a);returndrug;}}AmorDrugCreator.javapublicclassAmorDrugCreatorimplementsDrugCreator{publicDruggetDrug(){int[]a={250,5};Drugdrug=newAmorolfine("甲硝唑膠囊",a);returndrug;}}應(yīng)用程序應(yīng)用程序Appletcation.java使用了上述工廠模式中所涉及的抽象產(chǎn)品、構(gòu)建者以及具體構(gòu)造者,即使用具體構(gòu)造者為用戶提供藥品。Appletcation.javaimportjava.util.*;publicclassAppletcation{publicstaticvoidmain(Stringargs[]){DrugCreaorcreator=newParaDrugCreator();Drugdrug=creator.getDrug();System.out.println(drug.getName()+"的成分:");System.out.print
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年技術(shù)開發(fā)合同模板(31篇)
- 2025年上海商業(yè)地產(chǎn)租賃合同解析
- 2025年個(gè)體工商戶委托加工合同
- 2025年臨時(shí)教員聘用合同范例
- 2025年房產(chǎn)擔(dān)保個(gè)人借款策劃協(xié)議書
- 2025年公共設(shè)施維護(hù)工程標(biāo)準(zhǔn)采購(gòu)協(xié)議
- 2025年人力資源雇傭管理協(xié)議
- 2025年電子美容儀項(xiàng)目提案報(bào)告范稿
- 2025年二手房買賣合同廢止示例
- 2025年標(biāo)準(zhǔn)射頻天線租賃合同文本
- 香港(2024年-2025年小學(xué)二年級(jí)語(yǔ)文)人教版摸底考試試卷(含答案)
- 2023年部編人教版三年級(jí)《道德與法治》下冊(cè)全冊(cè)課件【全套】
- DL∕T 1844-2018 濕式靜電除塵器用導(dǎo)電玻璃鋼陽(yáng)極檢驗(yàn)規(guī)范
- 西師版小學(xué)數(shù)學(xué)二年級(jí)(下)表格式全冊(cè)教案
- JTG D62-2004 公路鋼筋混凝土及預(yù)應(yīng)力混凝土橋涵設(shè)計(jì)規(guī)范
- 2025屆廣東省廣州市番禺區(qū)數(shù)學(xué)高一下期末檢測(cè)試題含解析
- 2024-2029年中國(guó)動(dòng)畫短片行業(yè)市場(chǎng)現(xiàn)狀分析及競(jìng)爭(zhēng)格局與投資發(fā)展研究報(bào)告
- DZ∕T 0204-2022 礦產(chǎn)地質(zhì)勘查規(guī)范 稀土(正式版)
- 護(hù)士如何提高病情觀察的能力
- 醫(yī)?;鸨O(jiān)管培訓(xùn)課件
- 參地益腎口服液作用機(jī)制研究
評(píng)論
0/150
提交評(píng)論