第五章 設計準則2-靈活性和可重用性_第1頁
第五章 設計準則2-靈活性和可重用性_第2頁
第五章 設計準則2-靈活性和可重用性_第3頁
第五章 設計準則2-靈活性和可重用性_第4頁
第五章 設計準則2-靈活性和可重用性_第5頁
已閱讀5頁,還剩15頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

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

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

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

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

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

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

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

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

9、 + 工作完成迅速工作完成迅速(通常通常) + 范圍清晰范圍清晰 + 可能更有效可能更有效- - 未來應用可能較少用到未來應用可能較少用到 - - 擴展需求代價很大擴展需求代價很大+ + 未來應用可能較多用到未來應用可能較多用到+ + 需求可變需求可變- - - 范圍劃分不清晰范圍劃分不清晰- - 可能會比較費力可能會比較費力- - 需要更多地關注效率需要更多地關注效率一個更靈活的計算器應用程序的設計一個更靈活的計算器應用程序的設計CommandLineCalculator main()executeAdditions()solicitNumberAccounts()getAnInputFromUser()interactWithUser()已存在的設計已存在的設計新的設計新的設計Calculator solicit

溫馨提示

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

評論

0/150

提交評論