設(shè)計(jì)模式ppt課件.ppt_第1頁
設(shè)計(jì)模式ppt課件.ppt_第2頁
設(shè)計(jì)模式ppt課件.ppt_第3頁
設(shè)計(jì)模式ppt課件.ppt_第4頁
設(shè)計(jì)模式ppt課件.ppt_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、設(shè)計(jì)模式概述,教學(xué)內(nèi)容,設(shè)計(jì)模式的誕生與發(fā)展 設(shè)計(jì)模式的定義與分類 GoF設(shè)計(jì)模式簡介 設(shè)計(jì)模式的優(yōu)點(diǎn),2,設(shè)計(jì)模式的誕生與發(fā)展,模式的誕生與定義 模式起源于建筑業(yè)而非軟件業(yè) 模式(pattern)之父美國加利佛尼亞大學(xué)環(huán)境結(jié)構(gòu)中心研究所所長Christopher Alexander博士 A Pattern Language: Towns, Buildings, Construction253個(gè)建筑和城市規(guī)劃模式 模式 Context(模式可適用的前提條件) Theme或Problem(在特定條件下要解決的目標(biāo)問題) Solution(對(duì)目標(biāo)問題求解過程中各種物理關(guān)系的記述),3,設(shè)計(jì)模式的誕

2、生與發(fā)展,Christopher Alexander,4,設(shè)計(jì)模式的誕生與發(fā)展,模式的誕生與定義 Alexander給出了關(guān)于模式的經(jīng)典定義:每個(gè)模式都描述了一個(gè)在我們的環(huán)境中不斷出現(xiàn)的問題,然后描述了該問題的解決方案的核心,通過這種方式,我們可以無數(shù)次地重用那些已有的解決方案,無需再重復(fù)相同的工作。 A pattern is a solution to a problem in a context 模式是在特定環(huán)境中解決問題的一種方案,5,設(shè)計(jì)模式的誕生與發(fā)展,軟件模式 1990年,軟件工程界開始關(guān)注Christopher Alexander等在這一住宅、公共建筑與城市規(guī)劃領(lǐng)域的重大突破,最

3、早將該模式的思想引入軟件工程方法學(xué)的是1991-1992年以“四人組(Gang of Four,GoF,分別是Erich Gamma, Richard Helm, Ralph Johnson和John Vlissides)”自稱的四位著名軟件工程學(xué)者,他們?cè)?994年歸納發(fā)表了23種在軟件開發(fā)中使用頻率較高的設(shè)計(jì)模式,旨在用模式來統(tǒng)一溝通面向?qū)ο蠓椒ㄔ诜治?、設(shè)計(jì)和實(shí)現(xiàn)間的鴻溝。,6,設(shè)計(jì)模式的誕生與發(fā)展,Gang of Four,7,設(shè)計(jì)模式的誕生與發(fā)展,Erich Gamma,蘇黎世大學(xué)計(jì)算機(jī)科學(xué)博士, Eclipse項(xiàng)目主要技術(shù)負(fù)責(zé)人之一。,John Vlissides,斯坦福大學(xué)計(jì)算機(jī)科

4、學(xué)博士, 原IBM研究員, 于2005年11月24日因腦瘤去世。,Ralph Johnson,墨爾本大學(xué)計(jì)算機(jī)科學(xué)博士, IBM 研究員。,Richard Helm,康奈爾大學(xué)計(jì)算機(jī)科學(xué)博士, 伊利諾伊大學(xué)教授。,Gang of Four,8,設(shè)計(jì)模式的誕生與發(fā)展,軟件模式 軟件模式是將模式的一般概念應(yīng)用于軟件開發(fā)領(lǐng)域,即軟件開發(fā)的總體指導(dǎo)思路或參照樣板。軟件模式并非僅限于設(shè)計(jì)模式,還包括架構(gòu)模式、分析模式和過程模式等,實(shí)際上,在軟件生存期的每一個(gè)階段都存在著一些被認(rèn)同的模式。 軟件模式可以認(rèn)為是對(duì)軟件開發(fā)這一特定“問題”的“解法”的某種統(tǒng)一表示,它和Alexander所描述的模式定義完全相同

5、,即軟件模式=一定條件下的問題+解法。軟件模式的基礎(chǔ)結(jié)構(gòu)由4個(gè)部分構(gòu)成:問題描述、前提條件(環(huán)境或約束條件)、解法和效果。,9,設(shè)計(jì)模式的誕生與發(fā)展,軟件模式,10,設(shè)計(jì)模式的誕生與發(fā)展,軟件模式 軟件模式與具體的應(yīng)用領(lǐng)域無關(guān),在模式發(fā)現(xiàn)過程中需要遵循大三律(Rule of Three),即只有經(jīng)過三個(gè)以上不同類型(或不同領(lǐng)域)的系統(tǒng)的校驗(yàn),一個(gè)解決方案才能從候選模式升格為模式。,11,設(shè)計(jì)模式的誕生與發(fā)展,設(shè)計(jì)模式的發(fā)展 1987年,Kent Beck和Ward Cunningham借鑒Alexander的模式思想在程序開發(fā)中開始應(yīng)用一些模式 ,在OOPSLA會(huì)議上發(fā)表了他們的成果。 199

6、0年,OOPSLA與ECOOP聯(lián)合舉辦,Erich Gamma和Richard Helm等人開始討論有關(guān)模式的話題(Bruce Anderson主持),“四人組” 正式成立,并開始著手進(jìn)行設(shè)計(jì)模式的分類整理工作。 1991 年,OOPSLA,Bruce Anderson主持了首次針對(duì)設(shè)計(jì)模式的研討會(huì) 。 1992 年,OOPSLA ,Anderson再度主持研討會(huì),模式已經(jīng)逐漸成為人們討論的話題。 注: OOPSLA (Object-Oriented Programming, Systems, Languages & Applications,面向?qū)ο缶幊?、系統(tǒng)、語言和應(yīng)用大會(huì)),編程語言及軟

7、件工程國際頂級(jí)會(huì)議,2010年改為SPLASH - Systems, Programming, Languages and Applications: Software for Humanity,12,設(shè)計(jì)模式的誕生與發(fā)展,設(shè)計(jì)模式的發(fā)展 1993年,Kent Beck 和 Grady Booch 贊助了第一次關(guān)于設(shè)計(jì)模式的會(huì)議,這個(gè)設(shè)計(jì)模式研究組織發(fā)展成為著名的Hillside Group研究組。 1994 年,由Hillside Group發(fā)起,在美國伊利諾伊州(Illinois)的Allerton Park召開了第1屆關(guān)于面向?qū)ο竽J降氖澜缧詴?huì)議,名為PLoP(Pattern Langu

8、ages of Programs, 編程語言模式會(huì)議),簡稱PLoP94。 1995年,PLoP95 仍在伊利諾伊州的Allerton Park舉行 ,“四人組”出版了設(shè)計(jì)模式:可復(fù)用面向?qū)ο筌浖幕A(chǔ)(Design Patterns: Elements of Reusable Object-Oriented Software)一書,本書成為1995年最搶手的面向?qū)ο髸?,也成為設(shè)計(jì)模式的經(jīng)典書籍。,13,設(shè)計(jì)模式的誕生與發(fā)展,設(shè)計(jì)模式的發(fā)展 從1995年至今,設(shè)計(jì)模式在軟件開發(fā)中得以廣泛應(yīng)用,在Sun的Java SE/Java EE平臺(tái)和Microsoft的.net平臺(tái)設(shè)計(jì)中就應(yīng)用了大量的設(shè)

9、計(jì)模式。 誕生了越來越多的與設(shè)計(jì)模式相關(guān)的書籍和網(wǎng)站,設(shè)計(jì)模式也作為一門獨(dú)立的課程或作為軟件體系結(jié)構(gòu)等課程的重要組成部分出現(xiàn)在國內(nèi)外研究生和大學(xué)教育的課堂上。,14,設(shè)計(jì)模式的定義與分類,設(shè)計(jì)模式的定義 設(shè)計(jì)模式(Design Pattern)是一套被反復(fù)使用、多數(shù)人知曉的、經(jīng)過分類編目的、代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié),使用設(shè)計(jì)模式是為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。,15,設(shè)計(jì)模式的定義與分類,設(shè)計(jì)模式的基本要素 設(shè)計(jì)模式一般有如下幾個(gè)基本要素:模式名稱,問題,目的,解決方案,效果,實(shí)例代碼和相關(guān)設(shè)計(jì)模式,其中的關(guān)鍵元素包括以下四個(gè)方面: 模式名稱 (pattern name)

10、問題 (problem) 解決方案 (solution) 效果 (consequences),16,設(shè)計(jì)模式的定義與分類,設(shè)計(jì)模式學(xué)習(xí)步驟 我們將按照以下次序來學(xué)習(xí)設(shè)計(jì)模式: 模式動(dòng)機(jī)與定義 模式結(jié)構(gòu)與分析 模式實(shí)例與解析 模式效果與應(yīng)用 模式擴(kuò)展,17,設(shè)計(jì)模式的定義與分類,設(shè)計(jì)模式的分類 根據(jù)其目的(模式是用來做什么的)可分為創(chuàng)建型(Creational),結(jié)構(gòu)型(Structural)和行為型(Behavioral)三種: 創(chuàng)建型模式主要用于創(chuàng)建對(duì)象。 結(jié)構(gòu)型模式主要用于處理類或?qū)ο蟮慕M合。 行為型模式主要用于描述對(duì)類或?qū)ο笤鯓咏换ズ驮鯓臃峙渎氊?zé)。,18,設(shè)計(jì)模式的定義與分類,設(shè)計(jì)模式的

11、分類 根據(jù)范圍,即模式主要是用于類之間關(guān)系還是處理對(duì)象之間的關(guān)系,可分為類模式和對(duì)象模式兩種: 類模式處理類和子類之間的關(guān)系,這些關(guān)系通過繼承建立,在編譯時(shí)刻就被確定下來,是屬于靜態(tài)的。 對(duì)象模式處理對(duì)象間的關(guān)系,這些關(guān)系在運(yùn)行時(shí)刻變化,更具動(dòng)態(tài)性。,19,GoF設(shè)計(jì)模式簡介,20,GoF設(shè)計(jì)模式簡介,創(chuàng)建型模式 抽象工廠模式(Abstract Factory) 建造者模式(Builder) 工廠方法模式(Factory Method) 原型模式(Prototype) 單例模式(Singleton),21,GoF設(shè)計(jì)模式簡介,結(jié)構(gòu)型模式 適配器模式(Adapter) 橋接模式(Bridge)

12、組合模式(Composite) 裝飾模式(Decorator) 外觀模式(Facade) 享元模式(Flyweight) 代理模式(Proxy),22,GoF設(shè)計(jì)模式簡介,行為型模式 職責(zé)鏈模式(Chain of Responsibility) 命令模式(Command) 解釋器模式(Interpreter) 迭代器模式(Iterator) 中介者模式(Mediator) 備忘錄模式(Memento) 觀察者模式(Observer) 狀態(tài)模式(State) 策略模式(Strategy) 模板方法模式(Template Method) 訪問者模式(Visitor),23,設(shè)計(jì)模式的優(yōu)點(diǎn),設(shè)計(jì)模式

13、是從許多優(yōu)秀的軟件系統(tǒng)中總結(jié)出的成功的、能夠?qū)崿F(xiàn)可維護(hù)性復(fù)用的設(shè)計(jì)方案,使用這些方案將避免我們做一些重復(fù)性的工作,而且可以設(shè)計(jì)出高質(zhì)量的軟件系統(tǒng)。具體來說,設(shè)計(jì)模式的主要優(yōu)點(diǎn)如下: 設(shè)計(jì)模式融合了眾多專家的經(jīng)驗(yàn),并以一種標(biāo)準(zhǔn)的形式供廣大開發(fā)人員所用,它提供了一套通用的設(shè)計(jì)詞匯和一種通用的語言以方便開發(fā)人員之間溝通和交流,使得設(shè)計(jì)方案更加通俗易懂。對(duì)于使用不同編程語言的開發(fā)和設(shè)計(jì)人員可以通過設(shè)計(jì)模式來交流系統(tǒng)設(shè)計(jì)方案,每一個(gè)模式都對(duì)應(yīng)一個(gè)標(biāo)準(zhǔn)的解決方案,設(shè)計(jì)模式可以降低開發(fā)人員理解系統(tǒng)的復(fù)雜度。,24,設(shè)計(jì)模式的優(yōu)點(diǎn),設(shè)計(jì)模式使人們可以更加簡單方便地復(fù)用成功的設(shè)計(jì)和體系結(jié)構(gòu),將已證實(shí)的技術(shù)表述成

14、設(shè)計(jì)模式也會(huì)使新系統(tǒng)開發(fā)者更加容易理解其設(shè)計(jì)思路。設(shè)計(jì)模式使得重用成功的設(shè)計(jì)更加容易,并避免那些導(dǎo)致不可重用的設(shè)計(jì)方案。 設(shè)計(jì)模式使得設(shè)計(jì)方案更加靈活,且易于修改。 設(shè)計(jì)模式的使用將提高軟件系統(tǒng)的開發(fā)效率和軟件質(zhì)量,且在一定程度上節(jié)約設(shè)計(jì)成本。 設(shè)計(jì)模式有助于初學(xué)者更深入地理解面向?qū)ο笏枷?,一方面可以幫助初學(xué)者更加方便地閱讀和學(xué)習(xí)現(xiàn)有類庫與其他系統(tǒng)中的源代碼,另一方面還可以提高軟件的設(shè)計(jì)水平和代碼質(zhì)量。,25,部分設(shè)計(jì)模式說明,1、工廠模式:客戶類和工廠類分開。消費(fèi)者任何時(shí)候需要某種產(chǎn)品,只需向工廠請(qǐng)求即可。消費(fèi)者無須修改就可以接納新產(chǎn)品。 2、建造模式:將產(chǎn)品的內(nèi)部表象和產(chǎn)品的生成過程分割開

15、來,從而使一個(gè)建造過程生成具有不同的內(nèi)部表象的產(chǎn)品對(duì)象。建造模式使得產(chǎn)品內(nèi)部表象可以獨(dú)立的變化,客戶不必知道產(chǎn)品內(nèi)部組成的細(xì)節(jié)。 3、工廠方法模式:核心工廠類不再負(fù)責(zé)所有產(chǎn)品的創(chuàng)建,而是將具體創(chuàng)建的工作交給子類去做,成為一個(gè)抽象工廠角色,僅負(fù)責(zé)給出具體工廠類必須實(shí)現(xiàn)的接口,而不接觸哪一個(gè)產(chǎn)品類應(yīng)當(dāng)被實(shí)例化這種細(xì)節(jié)。 4、原始模型模式:通過給出一個(gè)原型對(duì)象來指明所要?jiǎng)?chuàng)建的對(duì)象的類型,然后用復(fù)制這個(gè)原型對(duì)象的方法創(chuàng)建出更多同類型的對(duì)象。 5、單例模式:單例模式確保某一個(gè)類只有一個(gè)實(shí)例,而且自行實(shí)例化并向整個(gè)系統(tǒng)提供這個(gè)實(shí)例單例模式。 6、適配器(變壓器)模式:把一個(gè)類的接口變換成客戶端所期待的另一

16、種接口,從而使原本因接口原因不匹配而無法一起工作的兩個(gè)類能夠一起工作。適配類可以根據(jù)參數(shù)返還一個(gè)合適的實(shí)例給客戶端.,26,部分設(shè)計(jì)模式說明,7、代理模式:代理模式給某一個(gè)對(duì)象提供一個(gè)代理對(duì)象,并由代理對(duì)象控制對(duì)源對(duì)象的引用。代理就是一個(gè)人或一個(gè)機(jī)構(gòu)代表另一個(gè)人或者一個(gè)機(jī)構(gòu)采取行動(dòng)。某些情況下,客戶不想或者不能夠直接引用一個(gè)對(duì)象,代理對(duì)象可以在客戶和目標(biāo)對(duì)象直接起到中介的作用。 8、命令模式:命令模式把一個(gè)請(qǐng)求或者操作封裝到一個(gè)對(duì)象中。命令模式把發(fā)出命令的責(zé)任和執(zhí)行命令的責(zé)任分割開,委派給不同的對(duì)象。命令模式允許請(qǐng)求的一方和發(fā)送的一方獨(dú)立開來,使得請(qǐng)求的一方不必知道接收請(qǐng)求的一方的接口,更不必

17、知道請(qǐng)求是怎么被接收,以及操作是否執(zhí)行,何時(shí)被執(zhí)行以及是怎么被執(zhí)行的。系統(tǒng)支持命令的撤消。 9,模板方法模式:模板方法模式準(zhǔn)備一個(gè)抽象類,將部分邏輯以具體方法以及具體構(gòu)造子的形式實(shí)現(xiàn),然后聲明一些抽象方法來迫使子類實(shí)現(xiàn)剩余的邏輯。不同的子類可以以不同的方式實(shí)現(xiàn)這些抽象方法,從而對(duì)剩余的邏輯有不同的實(shí)現(xiàn)。先制定一個(gè)頂級(jí)邏輯框架,而將邏輯的細(xì)節(jié)留給具體的子類去實(shí)現(xiàn)。,27,本章小結(jié),模式是在特定環(huán)境中解決問題的一種方案。 GoF (Erich Gamma, Richard Helm, Ralph Johnson和John Vlissides)最先將模式的概念引入軟件工程領(lǐng)域,他們歸納發(fā)表了23種在軟件開發(fā)中使用頻率較高的設(shè)計(jì)模式,旨在用模式來統(tǒng)一溝通面向?qū)ο蠓椒ㄔ诜治?、設(shè)計(jì)和實(shí)現(xiàn)間的鴻溝。 軟件模式是將模式的一般概念應(yīng)用于軟件開發(fā)領(lǐng)域,即軟件開發(fā)的總體指導(dǎo)思路或參照樣板。軟件模式可以認(rèn)為是對(duì)軟件開發(fā)這一特定“問題”的“解法”的某種統(tǒng)一表示,即軟件模式=一定條件下的問題+解法。,28,本章

溫馨提示

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