




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、q 基本概念q 基本要素q 模式分類q 實(shí)例第十九講第十九講 設(shè)計(jì)模式(設(shè)計(jì)模式(Design Patterns)n在面向?qū)ο蟮木幊讨?,軟件編程人員更加注重現(xiàn)有代碼的重用性和可維護(hù)性。n設(shè)計(jì)模式使人們可以更加簡(jiǎn)單方便地重用成功的設(shè)計(jì)和體系結(jié)構(gòu)。將已證實(shí)的技術(shù)表述成設(shè)計(jì)模式也會(huì)使新系統(tǒng)開發(fā)者更加容易理解其設(shè)計(jì)思路。設(shè)計(jì)模式設(shè)計(jì)模式基本概念基本概念一般而言,一個(gè)模式有四個(gè)基本要素一般而言,一個(gè)模式有四個(gè)基本要素n模式名稱(pattern name)n問題(problem)n解決方案(solution)n效果(consequences)設(shè)計(jì)模式設(shè)計(jì)模式基本要素基本要素模式名稱(模式名稱(patter
2、n name)一個(gè)助記名,它用一兩個(gè)詞來描述模式的問題、解決方案和效果。命名一個(gè)新的模式增加了我們的設(shè)計(jì)詞匯。設(shè)計(jì)模式允許我們?cè)谳^高的抽象層次上進(jìn)行設(shè)計(jì)?;谝粋€(gè)模式詞匯表,我們自己以及同事之間就可以討論模式并在編寫文檔時(shí)使用它們。模式名可以幫助我們思考,便于我們與其他人交流設(shè)計(jì)思想及設(shè)計(jì)結(jié)果。找到恰當(dāng)?shù)哪J矫彩俏覀冊(cè)O(shè)計(jì)模式編目工作的難點(diǎn)之一。設(shè)計(jì)模式設(shè)計(jì)模式基本要素基本要素設(shè)計(jì)模式設(shè)計(jì)模式基本要素基本要素問題(問題(problem)描述了應(yīng)該在何時(shí)使用模式。它解釋了設(shè)計(jì)問題和問題存在的前因后果,它可能描述了特定的設(shè)計(jì)問題,如怎樣用對(duì)象表示算法等。也可能描述了導(dǎo)致不靈活設(shè)計(jì)的類或?qū)ο蠼Y(jié)構(gòu)。有
3、時(shí)候,問題部分會(huì)包括使用模式必須滿足的一系列先決條件。設(shè)計(jì)模式設(shè)計(jì)模式基本要素基本要素解決方案(解決方案(solution)描述了設(shè)計(jì)的組成成分,它們之間的相互關(guān)系及各自的職責(zé)和協(xié)作方式。因?yàn)槟J骄拖褚粋€(gè)模板,可應(yīng)用于多種不同場(chǎng)合,所以解決方案并不描述一個(gè)特定而具體的設(shè)計(jì)或?qū)崿F(xiàn),而是提供設(shè)計(jì)問題的抽象描述和怎樣用一個(gè)具有一般意義的元素組合(類或?qū)ο蠼M合)來解決這個(gè)問題。設(shè)計(jì)模式設(shè)計(jì)模式基本要素基本要素效果(效果(consequences)描述了模式應(yīng)用的效果及使用模式應(yīng)權(quán)衡的問題。盡管我們描述設(shè)計(jì)決策時(shí),并不總提到模式效果,但它們對(duì)于評(píng)價(jià)設(shè)計(jì)選擇和理解使用模式的代價(jià)及好處具有重要意義。軟件效果
4、大多關(guān)注對(duì)時(shí)間和空間的衡量,它們也表述了語言和實(shí)現(xiàn)問題。因?yàn)閺?fù)用是面向?qū)ο笤O(shè)計(jì)的要素之一,所以模式效果包括它對(duì)系統(tǒng)的靈活性、擴(kuò)充性或可移植性的影響,顯式地列出這些效果對(duì)理解和評(píng)價(jià)這些模式很有幫助。設(shè)計(jì)模式設(shè)計(jì)模式模式分類模式分類n創(chuàng)建型模式創(chuàng)建型模式抽象的實(shí)例化過程n結(jié)構(gòu)型模式結(jié)構(gòu)型模式如何組合類和對(duì)象以獲得更大的結(jié)構(gòu)n行為型模式行為型模式涉及到算法和對(duì)象間職責(zé)的分配設(shè)計(jì)模式設(shè)計(jì)模式模式分類模式分類nAbstract Factory:抽象工廠nBuilder:生成器nFactory Method:工廠方法nProtoType:原型nSingleton:?jiǎn)螌?shí)例單實(shí)例設(shè)計(jì)模式設(shè)計(jì)模式模式分類模式分
5、類nMVC :模型模型-視圖視圖-控制器控制器nAdapter:適配器nBridge:橋接nComposite:組成nDecorator:裝飾nFacade:外觀nFlyweight:享元nProxy:代理設(shè)計(jì)模式設(shè)計(jì)模式模式分類模式分類nChain of Responsibility:責(zé)任鏈nCommand:命令nInterpreter:解釋器nIterator:迭代器nMediator:中介者nMemento:備忘錄nObserver:觀察者nState:狀態(tài)nStrategy:策略nTemplate Method:模板方法nVisotor:訪問者設(shè)計(jì)模式設(shè)計(jì)模式實(shí)例:實(shí)例:意圖意圖考慮數(shù)
6、據(jù)共享和封裝,保證一個(gè)類僅有一個(gè)實(shí)例,并在提供各種公共操作的基礎(chǔ)上提供一個(gè)該實(shí)例的全局訪問方法。要想保證一個(gè)類只有一個(gè)實(shí)例,需要做到:n必須能夠?qū)嵗@個(gè)類n必須阻止其它的類來隨意實(shí)例化這個(gè)類有了這個(gè)實(shí)例以后,需要提供一個(gè)該實(shí)例的全局訪問方法,這和該實(shí)例的保存位置有關(guān)。設(shè)計(jì)模式設(shè)計(jì)模式實(shí)例:實(shí)例:設(shè)計(jì)模式設(shè)計(jì)模式實(shí)例:實(shí)例:適用性適用性在下列情況下可使用Singleton模式:n當(dāng)類只能有一個(gè)實(shí)例且客戶可以從一個(gè)公共方法訪問它時(shí)。n當(dāng)這個(gè)唯一實(shí)例應(yīng)該是可通過子類繼承來擴(kuò)展的,并且客戶應(yīng)該無需更改代碼就能使用一個(gè)子類的實(shí)例時(shí)。 結(jié)構(gòu)結(jié)構(gòu)設(shè)計(jì)模式設(shè)計(jì)模式實(shí)例:實(shí)例:設(shè)計(jì)模式設(shè)計(jì)模式實(shí)例:實(shí)例:示例
7、一:示例一:public class Runtime private static Runtime currentRuntime = new Runtime();private Runtime()/.public static Runtime getRuntime() return currentRuntime; . 示例二:示例二: SingletonTest.javaSingletonSingleton模式優(yōu)點(diǎn):模式優(yōu)點(diǎn):n對(duì)唯一實(shí)例的受控訪問:對(duì)唯一實(shí)例的受控訪問:因?yàn)镾ingleton類封裝它的唯一實(shí)例,所以它可以嚴(yán)格地控制客戶怎樣以及何時(shí)訪問它。n允許對(duì)操作和表示的精化:允許對(duì)操作和
8、表示的精化: Singleton類可以有子類,而且用這個(gè)擴(kuò)展類的實(shí)例來配置一個(gè)應(yīng)用是很容易的。你可以用你所需要的類的實(shí)例在運(yùn)行時(shí)刻配置應(yīng)用。n比靜態(tài)方法(類操作)更靈活:比靜態(tài)方法(類操作)更靈活:另一種封裝單件功能的方式是使用靜態(tài)方法。但是,使用靜態(tài)方法需要考慮同步問題,也容易導(dǎo)致內(nèi)存數(shù)據(jù)不一致的問題。設(shè)計(jì)模式設(shè)計(jì)模式實(shí)例:實(shí)例:vMVC概述概述vWEB應(yīng)用的兩種開發(fā)模式應(yīng)用的兩種開發(fā)模式vMVC操作順序操作順序vMVC優(yōu)點(diǎn)優(yōu)點(diǎn)vMVC的適用性的適用性設(shè)計(jì)模式設(shè)計(jì)模式實(shí)例:實(shí)例:視圖控制器控制器模型int value=1MVC概述概述設(shè)計(jì)模式設(shè)計(jì)模式實(shí)例:實(shí)例:nMVC模式最初使用Small
9、Talk開發(fā),后來在Swing組件庫(kù)中廣泛應(yīng)用。n該模式采用一個(gè)圖形化對(duì)象并將其任務(wù)分解成三部分:1.控制器控制器:觸發(fā)一個(gè)對(duì)組件的改變。2.模型模型:提供修改、訪問數(shù)據(jù)的方法。3.視圖視圖:提供當(dāng)前數(shù)據(jù)的直觀顯示。MVC概述概述設(shè)計(jì)模式設(shè)計(jì)模式實(shí)例:實(shí)例:設(shè)計(jì)模式設(shè)計(jì)模式實(shí)例:實(shí)例:JSP + JavaBeanModel1的主要特點(diǎn)n表現(xiàn)層用HTML或JSP。nJSP文件還負(fù)責(zé)所有的業(yè)務(wù)和處理邏輯nJSP直接用代碼訪問數(shù)據(jù)或JSP通過JavaBean存取數(shù)據(jù)。n以頁面為中心,應(yīng)用程序的業(yè)務(wù)邏輯和程序流程都在頁面中出現(xiàn)。nJSP要跳轉(zhuǎn)到別的頁面,通過超級(jí)鏈接或Form表單的action實(shí)現(xiàn)。設(shè)
10、計(jì)模式設(shè)計(jì)模式實(shí)例:實(shí)例:設(shè)計(jì)模式設(shè)計(jì)模式實(shí)例:實(shí)例:nJSP不僅負(fù)責(zé)表示邏輯,還負(fù)責(zé)控制邏輯n大型項(xiàng)目中如果采取此方式,每個(gè)開發(fā)小組必須了解其它小組開發(fā)的所有頁面的詳細(xì)信息,否則對(duì)頁面的修改將會(huì)破壞應(yīng)用程序的流程。n當(dāng)輸出設(shè)備不同時(shí)(比如股票信息輸出到顯示器、手機(jī)、PDA上),需要采用不同的輸出格式(即不同的視圖),那么用此方式JSP不僅要判定設(shè)備的類型,而且要為不同類型的設(shè)備提供正確的顯示格式。Model1的缺點(diǎn)設(shè)計(jì)模式設(shè)計(jì)模式實(shí)例:實(shí)例:JSP + JavaBean +Servlet設(shè)計(jì)模式設(shè)計(jì)模式實(shí)例:實(shí)例:MVC模型模型在一個(gè)典型的J2EE Web應(yīng)用中,MVC設(shè)計(jì)模式包括三個(gè)部分:
11、n模型(模型(Model): 用于封裝數(shù)據(jù),一般是關(guān)系數(shù)據(jù)庫(kù)或EJB。n視圖(視圖(View): 數(shù)據(jù)的表現(xiàn)組件,通常就是JSP頁面,也可以是GUI,可以有多個(gè)。n控制器(控制器(Controller): 接受用戶動(dòng)作,負(fù)責(zé)統(tǒng)一管理。一般是Servlet。n在一個(gè)典型的企業(yè)級(jí)應(yīng)用企業(yè)級(jí)應(yīng)用中,經(jīng)常需要用多種類型的接口來支持多種類型的用戶。n比如,一個(gè)網(wǎng)上商店可能需要:1.為網(wǎng)上顧客提供HTML前端,2.為無線用戶提供WML前端,3.為系統(tǒng)管理員提供JFC/Swing GUI,4.為供應(yīng)商提供基于XML的Web service。設(shè)計(jì)模式設(shè)計(jì)模式實(shí)例:實(shí)例:MVC模型模型HTMLViewWMLVi
12、ewJFC/SwingViewXML-basedView企業(yè)信息系統(tǒng)企業(yè)信息系統(tǒng)傳統(tǒng)傳統(tǒng)Web用戶用戶無線用戶無線用戶系統(tǒng)管理員系統(tǒng)管理員B2B用戶用戶設(shè)計(jì)模式設(shè)計(jì)模式實(shí)例:實(shí)例:MVC模型模型nModel含有應(yīng)用程序的功能核心,表示應(yīng)用程序的狀態(tài),它不管View和Controller。nJavaBean就適合作為Model,可以用來設(shè)計(jì)應(yīng)用程序的大部分業(yè)務(wù)邏輯,能與數(shù)據(jù)庫(kù)或文件系統(tǒng)進(jìn)行交互,負(fù)責(zé)維護(hù)應(yīng)用程序的數(shù)據(jù)。MVC模型:模型:Model設(shè)計(jì)模式設(shè)計(jì)模式實(shí)例:實(shí)例:MVC模型:模型:View設(shè)計(jì)模式設(shè)計(jì)模式實(shí)例:實(shí)例:nView把應(yīng)用程序的數(shù)據(jù)通過界面展示給用戶。nView可以讀取Mod
13、el的數(shù)據(jù),但不可修改。n當(dāng)用戶修改Model數(shù)據(jù)時(shí),會(huì)通知View,以便用戶看到最新的數(shù)據(jù)信息。nJSP用于實(shí)現(xiàn)此目的,開發(fā)者不用知道也不必去關(guān)心數(shù)據(jù)庫(kù)發(fā)生了什么變化或者業(yè)務(wù)邏輯的詳細(xì)情況。n注意:JSP中應(yīng)盡可能少地使用Java代碼。MVC模型:模型:Controller設(shè)計(jì)模式設(shè)計(jì)模式實(shí)例:實(shí)例:控制器的作用是處理請(qǐng)求、創(chuàng)建JavaBean或創(chuàng)建供JSP使用的對(duì)象。通常,控制器還決定把用戶請(qǐng)求轉(zhuǎn)交給哪一個(gè)界面組件(View)。n用于對(duì)用戶的輸入進(jìn)行響應(yīng)。n它創(chuàng)建Model并提供輸入。nServlet可同時(shí)兼有Java和HTML代碼,可以接收來自客戶端的HTTP請(qǐng)求,根據(jù)此請(qǐng)求決定創(chuàng)建哪些
14、必要的JavaBean,并能把Model的數(shù)據(jù)修改通知View。1.在控制器被用戶觸發(fā)時(shí),它將把變化傳達(dá)給模型;2.模型改變?cè)摂?shù)據(jù)并將新數(shù)據(jù)推給適當(dāng)?shù)囊晥D3.視圖接收新數(shù)據(jù)并以新的圖像或表格形式顯示數(shù)據(jù)。MVC操作順序操作順序設(shè)計(jì)模式設(shè)計(jì)模式實(shí)例:實(shí)例:n將核心數(shù)據(jù)的存取、數(shù)據(jù)表示和控制邏輯三者分離開來,可針對(duì)多種用戶設(shè)計(jì)多個(gè)視圖,以便共享同樣的企業(yè)數(shù)據(jù)模型。nWeb設(shè)計(jì)人員可以集中于使用JSP來開發(fā)UI表示數(shù)據(jù),而代碼開發(fā)人員可以使用Servlet編寫執(zhí)行任務(wù)的代碼,這樣有利于縮短開發(fā)周期。MVC的優(yōu)點(diǎn)的優(yōu)點(diǎn)設(shè)計(jì)模式設(shè)計(jì)模式實(shí)例:實(shí)例:nWeb頁面需要根據(jù)用戶在運(yùn)行時(shí)提供的信息進(jìn)行動(dòng)態(tài)定制定制。nWeb站點(diǎn)上的信息需要經(jīng)常變動(dòng)變動(dòng)。
溫馨提示
- 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. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 食品終端配送合同樣本
- 深圳市商業(yè)地產(chǎn)租賃合同
- 學(xué)校與教師簽訂的勞動(dòng)合同
- 八小時(shí)工作制勞動(dòng)合同模板
- 生態(tài)農(nóng)業(yè)種植技術(shù)服務(wù)合同
- 游泳池常年服務(wù)承包合同范本教學(xué)用
- 農(nóng)用土地租賃合同協(xié)議書
- Module 1 Unit 1 I want a hot dog,please(教學(xué)設(shè)計(jì))2024-2025學(xué)年外研版(三起)英語六年級(jí)下冊(cè)
- 11 再塑生命的人2024-2025學(xué)年新教材七年級(jí)上冊(cè)語文新教學(xué)設(shè)計(jì)(統(tǒng)編版2024)
- 電競(jìng)比賽承辦合同范本
- 大數(shù)據(jù)與能源經(jīng)濟(jì)分析
- 小班數(shù)學(xué)課件《認(rèn)識(shí)長(zhǎng)方形》
- 淺談第三方物流的倉(cāng)儲(chǔ)管理
- 21ZJ111 變形縫建筑構(gòu)造
- 醫(yī)院各委員會(huì)職責(zé)制度
- 心理健康與職業(yè)生涯(中職)PPT完整全套教學(xué)課件
- 改良經(jīng)皮經(jīng)肝膽道鏡術(shù)New
- 2萬噸馬鈴薯深加工(淀粉)項(xiàng)目可行性研究報(bào)告
- 服飾品設(shè)計(jì)PPT完整全套教學(xué)課件
- 顱腦橫斷層解剖09課件
- 2023年同等學(xué)力申碩英語真題
評(píng)論
0/150
提交評(píng)論