版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、基本概念 基本要素 模式分類 實例,第十九講 設(shè)計模式(Design Patterns),在面向?qū)ο蟮木幊讨?,軟件編程人員更加注重現(xiàn)有代碼的重用性和可維護性。 設(shè)計模式使人們可以更加簡單方便地重用成功的設(shè)計和體系結(jié)構(gòu)。將已證實的技術(shù)表述成設(shè)計模式也會使新系統(tǒng)開發(fā)者更加容易理解其設(shè)計思路。 A pattern is an idea that has been useful in one practical context and will probably be useful in others. -Martin Fowler,設(shè)計模式 基本概念,一般而言,一個模式有四個基本要素 模式名稱(pa
2、ttern name) 問題(problem) 解決方案(solution) 效果(consequences),設(shè)計模式 基本要素,模式名稱(pattern name) 一個助記名,它用一兩個詞來描述模式的問題、解決方案和效果。命名一個新的模式增加了我們的設(shè)計詞匯。設(shè)計模式允許我們在較高的抽象層次上進行設(shè)計?;谝粋€模式詞匯表,我們自己以及同事之間就可以討論模式并在編寫文檔時使用它們。模式名可以幫助我們思考,便于我們與其他人交流設(shè)計思想及設(shè)計結(jié)果。找到恰當(dāng)?shù)哪J矫彩俏覀冊O(shè)計模式編目工作的難點之一。,設(shè)計模式 基本要素,設(shè)計模式 基本要素,問題(problem) 描述了應(yīng)該在何時使用模式。它解
3、釋了設(shè)計問題和問題存在的前因后果,它可能描述了特定的設(shè)計問題,如怎樣用對象表示算法等。也可能描述了導(dǎo)致不靈活設(shè)計的類或?qū)ο蠼Y(jié)構(gòu)。有時候,問題部分會包括使用模式必須滿足的一系列先決條件。,設(shè)計模式 基本要素,解決方案(solution) 描述了設(shè)計的組成成分,它們之間的相互關(guān)系及各自的職責(zé)和協(xié)作方式。因為模式就像一個模板,可應(yīng)用于多種不同場合,所以解決方案并不描述一個特定而具體的設(shè)計或?qū)崿F(xiàn),而是提供設(shè)計問題的抽象描述和怎樣用一個具有一般意義的元素組合(類或?qū)ο蠼M合)來解決這個問題。,設(shè)計模式 基本要素,效果(consequences) 描述了模式應(yīng)用的效果及使用模式應(yīng)權(quán)衡的問題。盡管我們描述設(shè)計
4、決策時,并不總提到模式效果,但它們對于評價設(shè)計選擇和理解使用模式的代價及好處具有重要意義。軟件效果大多關(guān)注對時間和空間的衡量,它們也表述了語言和實現(xiàn)問題。因為復(fù)用是面向?qū)ο笤O(shè)計的要素之一,所以模式效果包括它對系統(tǒng)的靈活性、擴充性或可移植性的影響,顯式地列出這些效果對理解和評價這些模式很有幫助。,設(shè)計模式 模式分類,創(chuàng)建型模式 抽象的實例化過程 結(jié)構(gòu)型模式 如何組合類和對象以獲得更大的結(jié)構(gòu) 行為型模式 涉及到算法和對象間職責(zé)的分配,設(shè)計模式 模式分類,創(chuàng)建型模式 Abstract Factory:抽象工廠 Builder:生成器 Factory Method:工廠方法 ProtoType:原型
5、Singleton:單實例,設(shè)計模式 模式分類,結(jié)構(gòu)型模式 MVC :模型-視圖-控制器 Adapter:適配器 Bridge:橋接 Composite:組成 Decorator:裝飾 Facade:外觀 Flyweight:享元 Proxy:代理,設(shè)計模式 模式分類,行為型模式 Chain of Responsibility:責(zé)任鏈 Command:命令 Interpreter:解釋器 Iterator:迭代器 Mediator:中介者 Memento:備忘錄 Observer:觀察者 State:狀態(tài) Strategy:策略 Template Method:模板方法 Visotor:訪問者
6、,設(shè)計模式 實例:Singleton模式,意圖 考慮數(shù)據(jù)共享和封裝,保證一個類僅有一個實例,并在提供各種公共操作的基礎(chǔ)上提供一個該實例的全局訪問方法。 動機 對于某些系統(tǒng),有些類里封裝了一些公共的、共享的信息,比如日志文件記錄器,數(shù)據(jù)緩沖區(qū)等,如果允許這些類有多個實例,那么,很容易造成這些信息的完整性被破壞,或者,由于同步操作,會造成系統(tǒng)的性能降低。因此,對這些類,只允許一個實例存在。,要想保證一個類只有一個實例,需要做到: 必須能夠?qū)嵗@個類 必須阻止其它的類來隨意實例化這個類 有了這個實例以后,需要提供一個該實例的全局訪問方法,這和該實例的保存位置有關(guān)。,設(shè)計模式 實例:Singleto
7、n模式,設(shè)計模式 實例:Singleton模式,適用性 在下列情況下可使用Singleton模式: 當(dāng)類只能有一個實例且客戶可以從一個公共方法訪問它時。 當(dāng)這個唯一實例應(yīng)該是可通過子類繼承來擴展的,并且客戶應(yīng)該無需更改代碼就能使用一個子類的實例時。,結(jié)構(gòu),設(shè)計模式 實例:Singleton模式,設(shè)計模式 實例:Singleton模式,示例一: public class Runtime private static Runtime currentRuntime = new Runtime(); private Runtime()/. public static Runtime getRuntim
8、e() return currentRuntime; . ,示例二: SingletonTest.java,Singleton模式優(yōu)點: 對唯一實例的受控訪問:因為Singleton類封裝它的唯一實例,所以它可以嚴(yán)格地控制客戶怎樣以及何時訪問它。 允許對操作和表示的精化: Singleton類可以有子類,而且用這個擴展類的實例來配置一個應(yīng)用是很容易的。你可以用你所需要的類的實例在運行時刻配置應(yīng)用。 比靜態(tài)方法(類操作)更靈活:另一種封裝單件功能的方式是使用靜態(tài)方法。但是,使用靜態(tài)方法需要考慮同步問題,也容易導(dǎo)致內(nèi)存數(shù)據(jù)不一致的問題。,設(shè)計模式 實例:Singleton模式,MVC概述 WEB應(yīng)
9、用的兩種開發(fā)模式 MVC操作順序 MVC優(yōu)點 MVC的適用性,設(shè)計模式 實例:MVC模式,MVC概述,設(shè)計模式 實例:MVC模式,MVC模式最初使用SmallTalk開發(fā),后來在Swing組件庫中廣泛應(yīng)用。 該模式采用一個圖形化對象并將其任務(wù)分解成三部分: 控制器:觸發(fā)一個對組件的改變。 模型:提供修改、訪問數(shù)據(jù)的方法。 視圖:提供當(dāng)前數(shù)據(jù)的直觀顯示。,MVC概述,設(shè)計模式 實例:MVC模式,設(shè)計模式 實例:MVC模式,JSP + JavaBean,Model1的主要特點,表現(xiàn)層用HTML或JSP。 JSP文件還負責(zé)所有的業(yè)務(wù)和處理邏輯 JSP直接用代碼訪問數(shù)據(jù)或JSP通過JavaBean存取
10、數(shù)據(jù)。 以頁面為中心,應(yīng)用程序的業(yè)務(wù)邏輯和程序流程都在頁面中出現(xiàn)。 JSP要跳轉(zhuǎn)到別的頁面,通過超級鏈接或Form表單的action實現(xiàn)。,設(shè)計模式 實例:MVC模式,設(shè)計模式 實例:MVC模式,JSP不僅負責(zé)表示邏輯,還負責(zé)控制邏輯 大型項目中如果采取此方式,每個開發(fā)小組必須了解其它小組開發(fā)的所有頁面的詳細信息,否則對頁面的修改將會破壞應(yīng)用程序的流程。 當(dāng)輸出設(shè)備不同時(比如股票信息輸出到顯示器、手機、PDA上),需要采用不同的輸出格式(即不同的視圖),那么用此方式JSP不僅要判定設(shè)備的類型,而且要為不同類型的設(shè)備提供正確的顯示格式。,Model1的缺點,設(shè)計模式 實例:MVC模式,JSP
11、+ JavaBean +Servlet,設(shè)計模式 實例:MVC模式,MVC模型,在一個典型的J2EE Web應(yīng)用中,MVC設(shè)計模式包括三個部分: 模型(Model): 用于封裝數(shù)據(jù),一般是關(guān)系數(shù)據(jù)庫或EJB。 視圖(View): 數(shù)據(jù)的表現(xiàn)組件,通常就是JSP頁面,也可以是GUI,可以有多個。 控制器(Controller): 接受用戶動作,負責(zé)統(tǒng)一管理。一般是Servlet。,在一個典型的企業(yè)級應(yīng)用中,經(jīng)常需要用多種類型的接口來支持多種類型的用戶。 比如,一個網(wǎng)上商店可能需要: 為網(wǎng)上顧客提供HTML前端, 為無線用戶提供WML前端, 為系統(tǒng)管理員提供JFC/Swing GUI, 為供應(yīng)商提
12、供基于XML的Web service。,設(shè)計模式 實例:MVC模式,MVC模型,設(shè)計模式 實例:MVC模式,MVC模型,Model含有應(yīng)用程序的功能核心,表示應(yīng)用程序的狀態(tài),它不管View和Controller。 JavaBean就適合作為Model,可以用來設(shè)計應(yīng)用程序的大部分業(yè)務(wù)邏輯,能與數(shù)據(jù)庫或文件系統(tǒng)進行交互,負責(zé)維護應(yīng)用程序的數(shù)據(jù)。,MVC模型:Model,設(shè)計模式 實例:MVC模式,MVC模型:View,設(shè)計模式 實例:MVC模式,View把應(yīng)用程序的數(shù)據(jù)通過界面展示給用戶。 View可以讀取Model的數(shù)據(jù),但不可修改。 當(dāng)用戶修改Model數(shù)據(jù)時,會通知View,以便用戶看到最
13、新的數(shù)據(jù)信息。 JSP用于實現(xiàn)此目的,開發(fā)者不用知道也不必去關(guān)心數(shù)據(jù)庫發(fā)生了什么變化或者業(yè)務(wù)邏輯的詳細情況。 注意:JSP中應(yīng)盡可能少地使用Java代碼。,MVC模型:Controller,設(shè)計模式 實例:MVC模式,控制器的作用是處理請求、創(chuàng)建JavaBean或創(chuàng)建供JSP使用的對象。通常,控制器還決定把用戶請求轉(zhuǎn)交給哪一個界面組件(View)。 用于對用戶的輸入進行響應(yīng)。 它創(chuàng)建Model并提供輸入。 Servlet可同時兼有Java和HTML代碼,可以接收來自客戶端的HTTP請求,根據(jù)此請求決定創(chuàng)建哪些必要的JavaBean,并能把Model的數(shù)據(jù)修改通知View。,在控制器被用戶觸發(fā)時,它將把變化傳達給模型; 模型改變該數(shù)據(jù)并將新數(shù)據(jù)推給適當(dāng)?shù)囊晥D 視圖接收新數(shù)據(jù)并以新的圖像或表格形式顯示數(shù)據(jù)。,MVC操作順序,設(shè)計模式 實例:MVC模式,將核心數(shù)據(jù)的存取、數(shù)據(jù)表示和控制邏輯三者分離開來,可針對多種用戶設(shè)計多個視圖,以便共享同樣的企業(yè)數(shù)據(jù)模型。 Web設(shè)計人員可以集中于使用JSP來開發(fā)UI表示數(shù)據(jù),而代碼開發(fā)人員可以使用Servlet編寫執(zhí)行任務(wù)的代碼,這樣有利于縮短開發(fā)周期。,MVC的優(yōu)點,設(shè)計模式 實例:MVC模式,Web頁面需要根據(jù)用戶在運行時提
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度木材行業(yè)節(jié)能減排技術(shù)改造合同范本8篇
- 2025年洗車場場地租賃合同:專業(yè)洗車服務(wù)協(xié)議范本3篇
- 2025版外架班組勞務(wù)分包及智慧工地合同2篇
- 碎石購買與工程預(yù)算控制2025年度合同2篇
- 2025版衛(wèi)生間裝修施工與環(huán)保材料采購合同2篇
- 羽絨制品企業(yè)發(fā)展戰(zhàn)略咨詢2025年度合同3篇
- 2025版圖書館特色館藏建設(shè)采購合同3篇
- 2025年度高科技產(chǎn)品買賣合同書樣本4篇
- D打印技術(shù)在建筑外立面設(shè)計的應(yīng)用考核試卷
- 二零二五版4S店尊貴訂車合同模板2篇
- 2025年山東浪潮集團限公司招聘25人高頻重點提升(共500題)附帶答案詳解
- 2024年財政部會計法律法規(guī)答題活動題目及答案一
- 2025年江西省港口集團招聘筆試參考題庫含答案解析
- (2024年)中國傳統(tǒng)文化介紹課件
- 液化氣安全檢查及整改方案
- 《冠心病》課件(完整版)
- 2024年云網(wǎng)安全應(yīng)知應(yīng)會考試題庫
- 公園保潔服務(wù)投標(biāo)方案
- 光伏電站項目合作開發(fā)合同協(xié)議書三方版
- 2024年秋季新滬教版九年級上冊化學(xué)課件 第2章 空氣與水資源第1節(jié) 空氣的組成
- 香港中文大學(xué)博士英文復(fù)試模板
評論
0/150
提交評論