第五章 設(shè)計(jì)準(zhǔn)則2-靈活性和可重用性_第1頁(yè)
第五章 設(shè)計(jì)準(zhǔn)則2-靈活性和可重用性_第2頁(yè)
第五章 設(shè)計(jì)準(zhǔn)則2-靈活性和可重用性_第3頁(yè)
第五章 設(shè)計(jì)準(zhǔn)則2-靈活性和可重用性_第4頁(yè)
第五章 設(shè)計(jì)準(zhǔn)則2-靈活性和可重用性_第5頁(yè)
已閱讀5頁(yè),還剩15頁(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)介

1、設(shè)計(jì)準(zhǔn)則設(shè)計(jì)準(zhǔn)則II靈活性、可重用性和高效性靈活性、可重用性和高效性靈活性靈活性 在設(shè)計(jì)時(shí)通常要考慮到將來(lái)的變化在設(shè)計(jì)時(shí)通常要考慮到將來(lái)的變化 增加更多相同類型功能增加更多相同類型功能 例如例如 ( (銀行應(yīng)用銀行應(yīng)用):):處理更多類型的帳號(hào),不需要處理更多類型的帳號(hào),不需要修改已存在的設(shè)計(jì)或代碼修改已存在的設(shè)計(jì)或代碼 增加不同的功能增加不同的功能 例如例如: 在存款的基礎(chǔ)增加提款功能在存款的基礎(chǔ)增加提款功能 修改功能修改功能 例如例如: : 允許透支允許透支WebSiteregister()Member0.nmembers網(wǎng)站成員注冊(cè)網(wǎng)站成員注冊(cè)Class Website Member m

2、embers; / or maybe: Vector member; void register( Member aMember ) . . . 網(wǎng)站成員注冊(cè)網(wǎng)站成員注冊(cè)WebSiteMember0.nStandardMemberXMemberYMembermembers引入基類,引入基類,并抽象化并抽象化靈活性靈活性 增加新功能要依據(jù)其上下文和應(yīng)用范圍增加新功能要依據(jù)其上下文和應(yīng)用范圍在以下范圍內(nèi): 一系列相關(guān)的函數(shù) 例如:在航空旅行線路(travel itinerary)的函數(shù)中增加打印功能 一個(gè)已存在的基類 例如: 在航空路線中增加“打印公路和輪船”的功能兩者都不是 例如: 增加“打印航

3、空、公路、輪船混合路線”的功能情況情況2:向一個(gè)基類中增加功能:向一個(gè)基類中增加功能TripprintItinerary()StandardTripprintItinerary()SomeApplicationClassMethod(s) callprintItinerary()通過(guò)繼承基類的方法來(lái)增加功能通過(guò)繼承基類的方法來(lái)增加功能TripprintItinerary()SeaTripprintItinerary()SomeApplicationClassLandTripprintItinerary()StandardTripprintItinerary()可重用性可重用性 一個(gè)方法相對(duì)于上

4、下文環(huán)境越獨(dú)立,其可重一個(gè)方法相對(duì)于上下文環(huán)境越獨(dú)立,其可重用性就越高。用性就越高??芍赜眯钥芍赜眯?完全指定完全指定 詳細(xì)說(shuō)明前置條件、后置條件等 避免不必要的封裝類耦合避免不必要的封裝類耦合 如果可行,讓方法成為靜態(tài)的 參數(shù)化 例如,讓方法功能化 但限制參數(shù)的個(gè)數(shù) 讓名字更具有表達(dá)性讓名字更具有表達(dá)性 可理解性促進(jìn)了可重用性 解釋算法解釋算法 重用者需要知道算法是如何工作的基于重用的類選擇基于重用的類選擇 完整地描述類完整地描述類 使類名和功能與實(shí)際情況相符使類名和功能與實(shí)際情況相符 定義一個(gè)有用的抽象類定義一個(gè)有用的抽象類以獲得更廣泛的適用性以獲得更廣泛的適用性 減少對(duì)其他類的依賴性減少

5、對(duì)其他類的依賴性通過(guò)繼承獲得通過(guò)繼承獲得可選可選高效性高效性 應(yīng)用程序必須在指定的時(shí)間內(nèi)完成特定的功應(yīng)用程序必須在指定的時(shí)間內(nèi)完成特定的功能,同樣,對(duì)內(nèi)存容量也有一定的要求。能,同樣,對(duì)內(nèi)存容量也有一定的要求。高效性高效性 先按其他原則設(shè)計(jì),再考慮效率問(wèn)題先按其他原則設(shè)計(jì),再考慮效率問(wèn)題 以靈活性、可重用性等原則進(jìn)行設(shè)計(jì)以靈活性、可重用性等原則進(jìn)行設(shè)計(jì) 找出效率低的部分找出效率低的部分 有針對(duì)性地修改有針對(duì)性地修改 一開(kāi)始就按效率原則進(jìn)行設(shè)計(jì)一開(kāi)始就按效率原則進(jìn)行設(shè)計(jì) 確認(rèn)當(dāng)前關(guān)鍵的效率需求確認(rèn)當(dāng)前關(guān)鍵的效率需求 在整個(gè)階段都按需求進(jìn)行設(shè)計(jì)在整個(gè)階段都按需求進(jìn)行設(shè)計(jì) 以上兩種方法的結(jié)合以上兩種

6、方法的結(jié)合 在設(shè)計(jì)時(shí)為效率需求作出折中在設(shè)計(jì)時(shí)為效率需求作出折中 在初始設(shè)計(jì)后,也要繼續(xù)考慮效率問(wèn)題在初始設(shè)計(jì)后,也要繼續(xù)考慮效率問(wèn)題執(zhí)行效率執(zhí)行效率 實(shí)時(shí)系統(tǒng)對(duì)執(zhí)行速度要求很高,要求在固定實(shí)時(shí)系統(tǒng)對(duì)執(zhí)行速度要求很高,要求在固定的時(shí)間內(nèi)完成所需的功能,通常以微秒級(jí)進(jìn)的時(shí)間內(nèi)完成所需的功能,通常以微秒級(jí)進(jìn)行計(jì)算(衡量)。行計(jì)算(衡量)。 即使是非實(shí)時(shí)系統(tǒng),執(zhí)行速度也很重要即使是非實(shí)時(shí)系統(tǒng),執(zhí)行速度也很重要執(zhí)行效率執(zhí)行效率 實(shí)時(shí)系統(tǒng)對(duì)執(zhí)行速度要求很高,要求在固定實(shí)時(shí)系統(tǒng)對(duì)執(zhí)行速度要求很高,要求在固定的時(shí)間內(nèi)完成所需的功能,通常以微秒級(jí)進(jìn)的時(shí)間內(nèi)完成所需的功能,通常以微秒級(jí)進(jìn)行計(jì)算(衡量)。行計(jì)算(

7、衡量)。 即使是非實(shí)時(shí)系統(tǒng),執(zhí)行速度也很重要即使是非實(shí)時(shí)系統(tǒng),執(zhí)行速度也很重要引起執(zhí)行效率問(wèn)題的一些因素引起執(zhí)行效率問(wèn)題的一些因素 循環(huán)循環(huán) WhileWhile、forfor、dodo 遠(yuǎn)程調(diào)用遠(yuǎn)程調(diào)用 需要網(wǎng)絡(luò)需要網(wǎng)絡(luò) LANLAN InternetInternet 函數(shù)調(diào)用函數(shù)調(diào)用 如果函數(shù)調(diào)用導(dǎo)致以上情況發(fā)生如果函數(shù)調(diào)用導(dǎo)致以上情況發(fā)生 對(duì)象創(chuàng)建對(duì)象創(chuàng)建存儲(chǔ)效率存儲(chǔ)效率 只存儲(chǔ)需要的數(shù)據(jù)只存儲(chǔ)需要的數(shù)據(jù) 在存儲(chǔ)效率與數(shù)據(jù)提取及重整時(shí)間之間獲得折中在存儲(chǔ)效率與數(shù)據(jù)提取及重整時(shí)間之間獲得折中 壓縮數(shù)據(jù)壓縮數(shù)據(jù) 在存儲(chǔ)效率與數(shù)據(jù)壓縮及解壓縮時(shí)間之間獲得折在存儲(chǔ)效率與數(shù)據(jù)壓縮及解壓縮時(shí)間之間獲

8、得折中中 按相關(guān)訪問(wèn)頻率存儲(chǔ)數(shù)據(jù)按相關(guān)訪問(wèn)頻率存儲(chǔ)數(shù)據(jù) 在存儲(chǔ)效率與決定存儲(chǔ)位置的時(shí)間之間獲得折中在存儲(chǔ)效率與決定存儲(chǔ)位置的時(shí)間之間獲得折中健壯性、靈活性、可重用性與高效健壯性、靈活性、可重用性與高效性之間的折中性之間的折中 極限編程法極限編程法 或完全為效率而設(shè)計(jì)或完全為效率而設(shè)計(jì) 靈活性驅(qū)動(dòng)法靈活性驅(qū)動(dòng)法 著眼于將來(lái)的需求著眼于將來(lái)的需求 附帶考慮可重用性附帶考慮可重用性 確保健壯性確保健壯性 提供足夠高的效率提供足夠高的效率 如果為了獲得在效率方面的需求,那么會(huì)在可重如果為了獲得在效率方面的需求,那么會(huì)在可重用性方面作出折中用性方面作出折中極限編程法極限編程法vs非極限編程法非極限編程法

9、 + 工作完成迅速工作完成迅速(通常通常) + 范圍清晰范圍清晰 + 可能更有效可能更有效- - 未來(lái)應(yīng)用可能較少用到未來(lái)應(yīng)用可能較少用到 - - 擴(kuò)展需求代價(jià)很大擴(kuò)展需求代價(jià)很大+ + 未來(lái)應(yīng)用可能較多用到未來(lái)應(yīng)用可能較多用到+ + 需求可變需求可變- - - 范圍劃分不清晰范圍劃分不清晰- - 可能會(huì)比較費(fèi)力可能會(huì)比較費(fèi)力- - 需要更多地關(guān)注效率需要更多地關(guān)注效率一個(gè)更靈活的計(jì)算器應(yīng)用程序的設(shè)計(jì)一個(gè)更靈活的計(jì)算器應(yīng)用程序的設(shè)計(jì)CommandLineCalculator main()executeAdditions()solicitNumberAccounts()getAnInputFromUser()interactWithUser()已存在的設(shè)計(jì)已存在的設(shè)計(jì)新的設(shè)計(jì)新的設(shè)計(jì)Calculator solicit

溫馨提示

  • 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)論