軟件設(shè)計(jì)原則、軟件設(shè)計(jì)模式(1)_第1頁
軟件設(shè)計(jì)原則、軟件設(shè)計(jì)模式(1)_第2頁
軟件設(shè)計(jì)原則、軟件設(shè)計(jì)模式(1)_第3頁
軟件設(shè)計(jì)原則、軟件設(shè)計(jì)模式(1)_第4頁
軟件設(shè)計(jì)原則、軟件設(shè)計(jì)模式(1)_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、1第25講 設(shè)計(jì)原則、設(shè)計(jì)模式22本講提綱 軟件設(shè)計(jì)目標(biāo) 設(shè)計(jì)原則 設(shè)計(jì)模式 創(chuàng)建型模式 結(jié)構(gòu)型模式 行為性模式 第25講 設(shè)計(jì)原則、設(shè)計(jì)模式33軟件設(shè)計(jì)目標(biāo)軟件設(shè)計(jì)目標(biāo) 正確性 健壯性 可復(fù)用性 可維護(hù)性 高效性44軟件設(shè)計(jì)目標(biāo)55可復(fù)用性:繼承聚合1. 依賴軟件設(shè)計(jì)目標(biāo)66可維護(hù)性:增加更多同類型的功能增加新功能修改功能軟件設(shè)計(jì)目標(biāo)77高效性:設(shè)計(jì)效率 使用便捷的工具和語言會(huì)節(jié)約大量的設(shè)計(jì)時(shí)間,但程序員也失去了對(duì)這個(gè)系統(tǒng)使用的時(shí)空方面的控制。執(zhí)行效率 可從遠(yuǎn)程調(diào)用、循環(huán)、函數(shù)調(diào)用、對(duì)象創(chuàng)建等方面提高執(zhí)行效率。軟件設(shè)計(jì)目標(biāo)88高效性:執(zhí)行效率處理循環(huán)問題消除遠(yuǎn)程調(diào)用消除函數(shù)調(diào)用軟件設(shè)計(jì)目標(biāo)9

2、9高效性:存儲(chǔ)效率只存儲(chǔ)需要的數(shù)據(jù)壓縮數(shù)據(jù)3. 按相關(guān)訪問頻率存儲(chǔ)數(shù)據(jù)軟件設(shè)計(jì)目標(biāo)1010軟件設(shè)計(jì)度量: 面向?qū)ο筌浖|(zhì)量的度量重點(diǎn)在于對(duì)類的分析上。 應(yīng)從類的以下方面考慮: 耦合 內(nèi)聚度 繼承性 復(fù)雜度軟件設(shè)計(jì)目標(biāo)1111軟件再工程: 是指對(duì)既存對(duì)象系統(tǒng)進(jìn)行調(diào)查,并將其重構(gòu)為新形式代碼的開發(fā)過程。 最大限度的復(fù)用既存系統(tǒng)的各種資源是再工程的最重點(diǎn)特征之一。 如何開發(fā)可復(fù)用軟件和如何構(gòu)造采用可復(fù)用軟件的系統(tǒng)體系結(jié)構(gòu)是兩個(gè)關(guān)鍵問題。軟件設(shè)計(jì)目標(biāo)1212軟件逆向工程: 是指分析軟件系統(tǒng),確定其構(gòu)成成分及各成分間的關(guān)系,提取并生成系統(tǒng)抽象和設(shè)計(jì)信息的工程。 軟件設(shè)計(jì)目標(biāo)1313設(shè)計(jì)模式設(shè)計(jì)模式的概念

3、最早是由建筑理論家設(shè)計(jì)模式的概念最早是由建筑理論家Christopher Alexander 提出的。他試圖找到一提出的。他試圖找到一種結(jié)構(gòu)化、可重用的方法,以在圖紙上捕捉到種結(jié)構(gòu)化、可重用的方法,以在圖紙上捕捉到建筑物的基本要素。建筑物的基本要素。Alexander提出的模式是經(jīng)過時(shí)間考驗(yàn)的解決方提出的模式是經(jīng)過時(shí)間考驗(yàn)的解決方案,使用模式可以降低解決問題的復(fù)雜度。案,使用模式可以降低解決問題的復(fù)雜度。1414設(shè)計(jì)模式Observerupdatecore datasetOfObserversModelinitialize(Model,View)handleEventupdatemyModel

4、myViewControllerinitialize(Model)makeControlleractivatedisplayupdatemyModelmyControllerViewattach(Observer)detach(Observer)notifygetDataservicecreatemanipulatedisaplayattachcall serviceattachgetDatacall updateMVC模式1515設(shè)計(jì)模式的定義一個(gè)模式是關(guān)注一個(gè)在特定設(shè)計(jì)環(huán)境中重復(fù)一個(gè)模式是關(guān)注一個(gè)在特定設(shè)計(jì)環(huán)境中重復(fù)出現(xiàn)的設(shè)計(jì)問題,并為它提供解決方案。出現(xiàn)的設(shè)計(jì)問題,并為它提供解決方案。受

5、到普遍認(rèn)可的設(shè)計(jì)模式的定義是由受到普遍認(rèn)可的設(shè)計(jì)模式的定義是由Dirk Riehle 和和Heinz Zullighoven于于1996年給出年給出的的模式是指從某個(gè)具體的形式中得到的模式是指從某個(gè)具體的形式中得到的一種抽象,在特殊的非任意性的環(huán)境中,該一種抽象,在特殊的非任意性的環(huán)境中,該形式不斷地重復(fù)出現(xiàn)。形式不斷地重復(fù)出現(xiàn)。1616一個(gè)好的模式必須做到以下幾點(diǎn):解決一個(gè)問題。是一個(gè)被證明了的概念。解并不是顯然的。描述了一種關(guān)系。1. 模式有重要的人為因素。設(shè)計(jì)模式的定義1717Erich Gamma博士等人采用下面的固定模式來描述:模式名稱和分類目的別名動(dòng)機(jī)應(yīng)用1. 結(jié)構(gòu)設(shè)計(jì)模式的描述1

6、818Erich Gamma博士等人采用下面的固定模式來描述:成分合作后果實(shí)現(xiàn)例程代碼已知的應(yīng)用7. 相關(guān)模式設(shè)計(jì)模式的描述1919模式作為體系結(jié)構(gòu)構(gòu)造塊構(gòu)造異構(gòu)體系結(jié)構(gòu) 模式和方法 實(shí)現(xiàn)模式 模式和體系結(jié)構(gòu)2020Coad的面向?qū)ο竽J酱a模式框架應(yīng)用模式 形式合約 設(shè)計(jì)模式方法分類 2121主要分為創(chuàng)建型模式、結(jié)構(gòu)型模式、行為型模式創(chuàng)建型模式(Creational Pattern) 用來創(chuàng)建對(duì)象的模式,是對(duì)類實(shí)例化過程的抽象化。創(chuàng)建模式將對(duì)象的創(chuàng)建、組合、表示獨(dú)立于系統(tǒng),系統(tǒng)可以得到很大的靈活性:創(chuàng)建對(duì)象、創(chuàng)建者、創(chuàng)建方式、創(chuàng)建時(shí)間,都可以被自由配置。設(shè)計(jì)模式方法分類2222主要分為創(chuàng)建型

7、模式、結(jié)構(gòu)型模式、行為型模式結(jié)構(gòu)型模式(Structural Pattern) 描述如何將類或?qū)ο蠼Y(jié)合在一起形成更大的結(jié)構(gòu)。行為型模式(Behavioral Pattern) 是對(duì)在不同的對(duì)象之間劃分責(zé)任和算法的抽象化。描述類或?qū)ο笾g如何交互以及如何分配職責(zé),所涉及的不僅有類或?qū)ο?,還有它們之間的通信模式。設(shè)計(jì)模式方法分類2323設(shè)計(jì)模式方法分類 創(chuàng)建型模式設(shè)計(jì)模式簡要說明可改變的方面Abstract Factory提供創(chuàng)建相關(guān)的或相互信賴的一組對(duì)象的接口,使得不需要制定類。產(chǎn)品對(duì)象族Builder將一個(gè)復(fù)雜對(duì)象的結(jié)構(gòu)與它的描述隔離開來,以便使用相同的結(jié)構(gòu)得到不同的描述。如何建立一種組合對(duì)象

8、Factory Method定義一個(gè)創(chuàng)建對(duì)象的接口,但由子類決定需要實(shí)例化哪一個(gè)類。實(shí)例化子類的對(duì)象Prototype使用一個(gè)原型來限制要?jiǎng)?chuàng)建的類的類型,通過拷貝這個(gè)原型得到新的類。實(shí)例化類的對(duì)象Singleton保證一個(gè)類只有一個(gè)實(shí)例,提供一個(gè)全局性的訪問點(diǎn)。類的單個(gè)實(shí)例2424設(shè)計(jì)模式方法分類 結(jié)構(gòu)型模式設(shè)計(jì)模式簡要說明可改變的方面Adapter將一個(gè)類的接口轉(zhuǎn)換成用戶希望得到的另一個(gè)接口。使原本不相容的接口得以協(xié)同工作。與對(duì)象的接口Bridge將類的抽象概念和它的實(shí)現(xiàn)分離開來,是它們可以相互獨(dú)立地變化。對(duì)象的實(shí)現(xiàn)Composite將對(duì)象組成樹結(jié)構(gòu)來表示局部和整體的層次關(guān)系。客戶可以統(tǒng)一處

9、理單個(gè)對(duì)象和對(duì)象組合。對(duì)象的結(jié)構(gòu)和組合Decorator給對(duì)象動(dòng)態(tài)的加入新的職責(zé),提供了用子類擴(kuò)展功能的一個(gè)靈活的替代無子類對(duì)象的責(zé)任2525設(shè)計(jì)模式方法分類 結(jié)構(gòu)型模式設(shè)計(jì)模式簡要說明可改變的方面Facade給一個(gè)子系統(tǒng)的所有接口提供一個(gè)統(tǒng)一的接口。它定義了更高層的接口,使該子系統(tǒng)更便于使用。與子系統(tǒng)的接口Flyweight提供支持大量細(xì)粒度對(duì)象共享的有效方法對(duì)象的存儲(chǔ)代價(jià)Proxy給另一個(gè)對(duì)象提供一個(gè)代理或定位符號(hào),以控制對(duì)它的訪問如何讓問對(duì)象,對(duì)象的位置2626設(shè)計(jì)模式方法分類 行為型模式設(shè)計(jì)模式簡要說明可改變的方面Chain of Responsibility通過給多個(gè)對(duì)象處理請(qǐng)求的機(jī)

10、會(huì),減少請(qǐng)求的發(fā)送者與接受者的耦合。將接受對(duì)象鏈接起來,在鏈傳遞請(qǐng)求,直到有一個(gè)對(duì)象處理這個(gè)請(qǐng)求可滿足請(qǐng)求的對(duì)象Command將一個(gè)請(qǐng)求封裝成一個(gè)對(duì)象,從而將不同的請(qǐng)求對(duì)數(shù)化并進(jìn)行排隊(duì)或登記,以支持撤銷操作何時(shí)及如何滿足一個(gè)請(qǐng)求Interpreter給定一種語言,給出它的預(yù)壓的一種描述方法和一個(gè)解釋器,該解釋器用這種描述方法解釋語言中的句子語言的語法和解釋Iterator提供一種順序性訪問一個(gè)聚集對(duì)象中元素的方法,而不需要暴露它的底層描述如何訪問、便利聚集的元素2727設(shè)計(jì)模式方法分類 行為型模式設(shè)計(jì)模式簡要說明可改變的方面Mediator定義一個(gè)對(duì)象來封裝一系列對(duì)象的交互。它保持對(duì)象間避免顯式地互相聯(lián)系,而消除它們間的耦合,還可以獨(dú)立地改變對(duì)象間的交互對(duì)象之間如何交互及哪些對(duì)象交互Memento在不破壞封裝的條件下,獲得一個(gè)內(nèi)部狀態(tài)并將它外部化,從而可以在以后使對(duì)象恢復(fù)到這個(gè)狀態(tài)何時(shí)及哪些私有信息存儲(chǔ)在對(duì)象之外Observer定義一個(gè)對(duì)象間一對(duì)多的信賴關(guān)系,當(dāng)一個(gè)對(duì)象改變狀態(tài)時(shí),所有與它有信賴關(guān)系的對(duì)象都得到通知并自動(dòng)更新信賴于另一對(duì)象的對(duì)象數(shù)量,信賴對(duì)象如何保持最新數(shù)據(jù)State允許一個(gè)對(duì)象在內(nèi)部狀態(tài)改變時(shí)的行為,對(duì)象看起來似乎能改變自己的類對(duì)象的狀態(tài)2828設(shè)計(jì)模式方法分類 行為型模式設(shè)計(jì)模式簡要說明可改變的方面Strategy定義一族算法,對(duì)每一個(gè)都進(jìn)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論