設(shè)計(jì)模式的誕生、發(fā)展與分類_第1頁
設(shè)計(jì)模式的誕生、發(fā)展與分類_第2頁
設(shè)計(jì)模式的誕生、發(fā)展與分類_第3頁
設(shè)計(jì)模式的誕生、發(fā)展與分類_第4頁
設(shè)計(jì)模式的誕生、發(fā)展與分類_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第3章設(shè)計(jì)模式概述劉偉第一頁,共三十頁。教材指定教材:劉偉.設(shè)計(jì)模式.北京:清華大學(xué)出版社,2011.輔導(dǎo)教材(實(shí)驗(yàn)教材):劉偉.設(shè)計(jì)模式實(shí)訓(xùn)教程.北京:清華大學(xué)出版社,2012.第二頁,共三十頁。本章教學(xué)內(nèi)容設(shè)計(jì)模式的誕生與發(fā)展設(shè)計(jì)模式的定義與分類GoF設(shè)計(jì)模式簡介設(shè)計(jì)模式的優(yōu)點(diǎn)第三頁,共三十頁。設(shè)計(jì)模式的誕生與發(fā)展模式的誕生與定義模式起源于建筑業(yè)而非軟件業(yè)模式(Pattern)之父——美國加利佛尼亞大學(xué)環(huán)境結(jié)構(gòu)中心研究所所長ChristopherAlexander博士《APatternLanguage:Towns,Buildings,Construction》——253個建筑和城市規(guī)劃模式模式Context(模式可適用的前提條件)Theme或Problem(在特定條件下要解決的目標(biāo)問題)Solution(對目標(biāo)問題求解過程中各種物理關(guān)系的記述)第四頁,共三十頁。設(shè)計(jì)模式的誕生與發(fā)展ChristopherAlexander第五頁,共三十頁。設(shè)計(jì)模式的誕生與發(fā)展模式的誕生與定義Alexander給出了關(guān)于模式的經(jīng)典定義:每個模式都描述了一個在我們的環(huán)境中不斷出現(xiàn)的問題,然后描述了該問題的解決方案的核心,通過這種方式,我們可以無數(shù)次地重用那些已有的解決方案,無需再重復(fù)相同的工作。Apatternisasolutiontoaprobleminacontext

模式是在特定環(huán)境中解決問題的一種方案第六頁,共三十頁。設(shè)計(jì)模式的誕生與發(fā)展軟件模式1990年,軟件工程界開始關(guān)注ChristopherAlexander等在這一住宅、公共建筑與城市規(guī)劃領(lǐng)域的重大突破,最早將該模式的思想引入軟件工程方法學(xué)的是1991-1992年以“四人組(GangofFour,GoF,分別是ErichGamma,RichardHelm,RalphJohnson和JohnVlissides)”自稱的四位著名軟件工程學(xué)者,他們在1994年歸納發(fā)表了23種在軟件開發(fā)中使用頻率較高的設(shè)計(jì)模式,旨在用模式來統(tǒng)一溝通面向?qū)ο蠓椒ㄔ诜治?、設(shè)計(jì)和實(shí)現(xiàn)間的鴻溝。第七頁,共三十頁。設(shè)計(jì)模式的誕生與發(fā)展GangofFour第八頁,共三十頁。設(shè)計(jì)模式的誕生與發(fā)展ErichGamma蘇黎世大學(xué)計(jì)算機(jī)科學(xué)博士,是Eclipse、JUnit等項(xiàng)目主要技術(shù)負(fù)責(zé)人之一。JohnVlissides斯坦福大學(xué)計(jì)算機(jī)科學(xué)博士,原IBM研究員,于2005年11月24日因腦瘤去世,享年44歲。RalphJohnson

墨爾本大學(xué)計(jì)算機(jī)科學(xué)博士,原IBM研究員,現(xiàn)在波士頓顧問集團(tuán)供職。RichardHelm康奈爾大學(xué)計(jì)算機(jī)科學(xué)博士,伊利諾伊大學(xué)教授。GangofFour第九頁,共三十頁。設(shè)計(jì)模式的誕生與發(fā)展軟件模式軟件模式是將模式的一般概念應(yīng)用于軟件開發(fā)領(lǐng)域,即軟件開發(fā)的總體指導(dǎo)思路或參照樣板。軟件模式并非僅限于設(shè)計(jì)模式,還包括架構(gòu)模式、分析模式和過程模式等,實(shí)際上,在軟件生存期的每一個階段都存在著一些被認(rèn)同的模式。軟件模式可以認(rèn)為是對軟件開發(fā)這一特定“問題”的“解法”的某種統(tǒng)一表示,它和Alexander所描述的模式定義完全相同,即軟件模式等于一定條件下的出現(xiàn)的問題以及解法。軟件模式的基礎(chǔ)結(jié)構(gòu)由4個部分構(gòu)成:問題描述、前提條件(環(huán)境或約束條件)、解法和效果。第十頁,共三十頁。設(shè)計(jì)模式的誕生與發(fā)展軟件模式第十一頁,共三十頁。設(shè)計(jì)模式的誕生與發(fā)展軟件模式軟件模式與具體的應(yīng)用領(lǐng)域無關(guān),在模式發(fā)現(xiàn)過程中需要遵循大三律(RuleofThree),即只有經(jīng)過三個以上不同類型(或不同領(lǐng)域)的系統(tǒng)的校驗(yàn),一個解決方案才能從候選模式升格為模式。第十二頁,共三十頁。設(shè)計(jì)模式的誕生與發(fā)展設(shè)計(jì)模式的發(fā)展1987年,KentBeck和WardCunningham借鑒Alexander的模式思想在程序開發(fā)中開始應(yīng)用一些模式,在OOPSLA會議上發(fā)表了他們的成果。1990年,OOPSLA與ECOOP聯(lián)合舉辦,ErichGamma和RichardHelm等人開始討論有關(guān)模式的話題(BruceAnderson主持),“四人組”正式成立,并開始著手進(jìn)行設(shè)計(jì)模式的分類整理工作。1991年,OOPSLA,BruceAnderson主持了首次針對設(shè)計(jì)模式的研討會。1992年,OOPSLA,Anderson再度主持研討會,模式已經(jīng)逐漸成為人們討論的話題。注:OOPSLA(Object-OrientedProgramming,Systems,Languages&Applications,面向?qū)ο缶幊?、系統(tǒng)、語言和應(yīng)用大會),編程語言及軟件工程國際頂級會議,2010年改為SPLASH---Systems,Programming,LanguagesandApplications:SoftwareforHumanity第十三頁,共三十頁。設(shè)計(jì)模式的誕生與發(fā)展設(shè)計(jì)模式的發(fā)展1993年,KentBeck和GradyBooch贊助了第一次關(guān)于設(shè)計(jì)模式的會議,這個設(shè)計(jì)模式研究組織發(fā)展成為著名的HillsideGroup研究組。1994年,由HillsideGroup發(fā)起,在美國伊利諾伊州(Illinois)的AllertonPark召開了第1屆關(guān)于面向?qū)ο竽J降氖澜缧詴h,名為PLoP(PatternLanguagesofPrograms,編程語言模式會議),簡稱PLoP‘94。1995年,PLoP‘95仍在伊利諾伊州的AllertonPark舉行,“四人組”出版了《設(shè)計(jì)模式:可復(fù)用面向?qū)ο筌浖幕A(chǔ)》(DesignPatterns:ElementsofReusableObject-OrientedSoftware)一書,本書成為1995年最搶手的面向?qū)ο髸渤蔀樵O(shè)計(jì)模式的經(jīng)典書籍。第十四頁,共三十頁。設(shè)計(jì)模式的誕生與發(fā)展設(shè)計(jì)模式的發(fā)展從1995年至今,設(shè)計(jì)模式在軟件開發(fā)中得以廣泛應(yīng)用,在Sun的JavaSE/JavaEE平臺和Microsoft的.net平臺設(shè)計(jì)中就應(yīng)用了大量的設(shè)計(jì)模式。誕生了越來越多的與設(shè)計(jì)模式相關(guān)的書籍和網(wǎng)站,設(shè)計(jì)模式也作為一門獨(dú)立的課程或作為軟件體系結(jié)構(gòu)等課程的重要組成部分出現(xiàn)在國內(nèi)外研究生和大學(xué)教育的課堂上。第十五頁,共三十頁。設(shè)計(jì)模式的定義與分類設(shè)計(jì)模式的定義設(shè)計(jì)模式(DesignPattern)是一套被反復(fù)使用、多數(shù)人知曉的、經(jīng)過分類編目的、代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié),使用設(shè)計(jì)模式是為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。第十六頁,共三十頁。設(shè)計(jì)模式的定義與分類設(shè)計(jì)模式的基本要素設(shè)計(jì)模式一般有如下幾個基本要素:模式名稱、問題、目的、解決方案、效果、實(shí)例代碼和相關(guān)設(shè)計(jì)模式,其中的關(guān)鍵元素包括以下四個方面:模式名稱(Patternname)問題(Problem)解決方案(Solution)效果(Consequences)第十七頁,共三十頁。設(shè)計(jì)模式的定義與分類設(shè)計(jì)模式學(xué)習(xí)步驟本書將按照以下次序來學(xué)習(xí)設(shè)計(jì)模式:模式動機(jī)與定義模式結(jié)構(gòu)與分析模式實(shí)例與解析模式效果與應(yīng)用模式擴(kuò)展第十八頁,共三十頁。設(shè)計(jì)模式的定義與分類設(shè)計(jì)模式的分類根據(jù)其目的(模式是用來做什么的)可分為創(chuàng)建型(Creational),結(jié)構(gòu)型(Structural)和行為型(Behavioral)三種:創(chuàng)建型模式主要用于創(chuàng)建對象。結(jié)構(gòu)型模式主要用于處理類或?qū)ο蟮慕M合。行為型模式主要用于描述對類或?qū)ο笤鯓咏换ズ驮鯓臃峙渎氊?zé)。第十九頁,共三十頁。設(shè)計(jì)模式的定義與分類設(shè)計(jì)模式的分類根據(jù)范圍,即模式主要是用于處理類之間關(guān)系還是處理對象之間的關(guān)系,可分為類模式和對象模式兩種:類模式處理類和子類之間的關(guān)系,這些關(guān)系通過繼承建立,在編譯時刻就被確定下來,是屬于靜態(tài)的。對象模式處理對象間的關(guān)系,這些關(guān)系在運(yùn)行時刻變化,更具動態(tài)性。第二十頁,共三十頁。GoF設(shè)計(jì)模式簡介范圍\目的創(chuàng)建型模式結(jié)構(gòu)型模式行為型模式類模式工廠方法模式(類)適配器模式解釋器模式模板方法模式對象模式抽象工廠模式建造者模式原型模式單例模式(對象)適配器模式橋接模式組合模式裝飾模式外觀模式享元模式代理模式職責(zé)鏈模式命令模式迭代器模式中介者模式備忘錄模式觀察者模式狀態(tài)模式策略模式訪問者模式第二十一頁,共三十頁。GoF設(shè)計(jì)模式簡介創(chuàng)建型模式抽象工廠模式(AbstractFactory)建造者模式(Builder)工廠方法模式(FactoryMethod)原型模式(Prototype)單例模式(Singleton)第二十二頁,共三十頁。GoF設(shè)計(jì)模式簡介結(jié)構(gòu)型模式適配器模式(Adapter)橋接模式(Bridge)組合模式(Composite)裝飾模式(Decorator)外觀模式(Facade)享元模式(Flyweight)代理模式(Proxy)第二十三頁,共三十頁。GoF設(shè)計(jì)模式簡介行為型模式職責(zé)鏈模式(ChainofResponsibility)命令模式(Command)解釋器模式(Interpreter)迭代器模式(Iterator)中介者模式(Mediator)備忘錄模式(Memento)觀察者模式(Observer)狀態(tài)模式(State)策略模式(Strategy)模板方法模式(TemplateMethod)訪問者模式(Visitor)第二十四頁,共三十頁。設(shè)計(jì)模式的優(yōu)點(diǎn)

設(shè)計(jì)模式是從許多優(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ì)方案更加通俗易懂。對于使用不同編程語言的開發(fā)和設(shè)計(jì)人員可以通過設(shè)計(jì)模式來交流系統(tǒng)設(shè)計(jì)方案,每一個模式都對應(yīng)一個標(biāo)準(zhǔn)的解決方案,設(shè)計(jì)模式可以降低開發(fā)人員理解系統(tǒng)的復(fù)雜度。第二十五頁,共三十頁。設(shè)計(jì)模式的優(yōu)點(diǎn)設(shè)計(jì)模式使人們可以更加簡單方便地復(fù)用成功的設(shè)計(jì)和體系結(jié)構(gòu),將已證實(shí)的技術(shù)表述成設(shè)計(jì)模式也會使新系統(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ì)量。第二十六頁,共三十頁。本章小結(jié)模式是在特定環(huán)境中解決問題的一種方案。GoF(ErichGamma,RichardHelm,RalphJohnson和JohnVlissides)最先將模式的概念引入軟件工程領(lǐng)域,他們歸納發(fā)表了23種在軟件開發(fā)中使用頻率較高的設(shè)計(jì)模式,旨在用模式來統(tǒng)一溝通面向?qū)ο蠓椒ㄔ诜治觥⒃O(shè)計(jì)和實(shí)現(xiàn)間的鴻溝。軟件模式是將模式的一般概念應(yīng)用于軟件開發(fā)領(lǐng)域,即軟件開發(fā)的總體指導(dǎo)思路或參照樣板。軟件模式可以認(rèn)為是對軟件開發(fā)這一特定“問題”的“解法”的某種統(tǒng)一表示,即軟件模式等于一定條件下的出現(xiàn)的問題以及解法。第二十七頁,共三十頁。本章小結(jié)設(shè)計(jì)模式是一套被反復(fù)使用、多數(shù)人知曉的、經(jīng)過分類編目的、代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié),使用設(shè)計(jì)模式是為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。設(shè)計(jì)模式一般有如下幾個基本要素:模式名稱、問題、目的、解決方案、效果、實(shí)例代碼和相關(guān)設(shè)計(jì)模式,其中的關(guān)鍵元素包括模式名稱、問題、解決方案和效果。設(shè)計(jì)模式根據(jù)其目的可分為創(chuàng)建型,結(jié)構(gòu)型和行為型三種;根據(jù)范圍可分為類模式和對象模式兩種。設(shè)計(jì)模式是從許多優(yōu)秀的軟件系統(tǒng)中總結(jié)出的成功的、能夠?qū)崿F(xiàn)可維護(hù)性復(fù)用的設(shè)計(jì)方案,使用這些方案將避免我們做一些重復(fù)性的工作,而且可以設(shè)計(jì)出高質(zhì)量的軟件系統(tǒng)。第二十八頁,共三十頁。ENDThanks!第二十九頁,共三十頁。內(nèi)容總結(jié)第3章。輔導(dǎo)教材(實(shí)驗(yàn)教材):。模式(Patt

溫馨提示

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

評論

0/150

提交評論