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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

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

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

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

溫馨提示

  • 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

提交評論