ch設計模式(DesignPatterns)_第1頁
ch設計模式(DesignPatterns)_第2頁
ch設計模式(DesignPatterns)_第3頁
ch設計模式(DesignPatterns)_第4頁
ch設計模式(DesignPatterns)_第5頁
已閱讀5頁,還剩30頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、q 基本概念q 基本要素q 模式分類q 實例第十九講第十九講 設計模式(設計模式(Design Patterns)n在面向對象的編程中,軟件編程人員更加注重現有代碼的重用性和可維護性。n設計模式使人們可以更加簡單方便地重用成功的設計和體系結構。將已證實的技術表述成設計模式也會使新系統開發者更加容易理解其設計思路。設計模式設計模式基本概念基本概念一般而言,一個模式有四個基本要素一般而言,一個模式有四個基本要素n模式名稱(pattern name)n問題(problem)n解決方案(solution)n效果(consequences)設計模式設計模式基本要素基本要素模式名稱(模式名稱(patter

2、n name)一個助記名,它用一兩個詞來描述模式的問題、解決方案和效果。命名一個新的模式增加了我們的設計詞匯。設計模式允許我們在較高的抽象層次上進行設計。基于一個模式詞匯表,我們自己以及同事之間就可以討論模式并在編寫文檔時使用它們。模式名可以幫助我們思考,便于我們與其他人交流設計思想及設計結果。找到恰當的模式名也是我們設計模式編目工作的難點之一。設計模式設計模式基本要素基本要素設計模式設計模式基本要素基本要素問題(問題(problem)描述了應該在何時使用模式。它解釋了設計問題和問題存在的前因后果,它可能描述了特定的設計問題,如怎樣用對象表示算法等。也可能描述了導致不靈活設計的類或對象結構。有

3、時候,問題部分會包括使用模式必須滿足的一系列先決條件。設計模式設計模式基本要素基本要素解決方案(解決方案(solution)描述了設計的組成成分,它們之間的相互關系及各自的職責和協作方式。因為模式就像一個模板,可應用于多種不同場合,所以解決方案并不描述一個特定而具體的設計或實現,而是提供設計問題的抽象描述和怎樣用一個具有一般意義的元素組合(類或對象組合)來解決這個問題。設計模式設計模式基本要素基本要素效果(效果(consequences)描述了模式應用的效果及使用模式應權衡的問題。盡管我們描述設計決策時,并不總提到模式效果,但它們對于評價設計選擇和理解使用模式的代價及好處具有重要意義。軟件效果

4、大多關注對時間和空間的衡量,它們也表述了語言和實現問題。因為復用是面向對象設計的要素之一,所以模式效果包括它對系統的靈活性、擴充性或可移植性的影響,顯式地列出這些效果對理解和評價這些模式很有幫助。設計模式設計模式模式分類模式分類n創建型模式創建型模式抽象的實例化過程n結構型模式結構型模式如何組合類和對象以獲得更大的結構n行為型模式行為型模式涉及到算法和對象間職責的分配設計模式設計模式模式分類模式分類nAbstract Factory:抽象工廠nBuilder:生成器nFactory Method:工廠方法nProtoType:原型nSingleton:單實例單實例設計模式設計模式模式分類模式分

5、類nMVC :模型模型-視圖視圖-控制器控制器nAdapter:適配器nBridge:橋接nComposite:組成nDecorator:裝飾nFacade:外觀nFlyweight:享元nProxy:代理設計模式設計模式模式分類模式分類nChain of Responsibility:責任鏈nCommand:命令nInterpreter:解釋器nIterator:迭代器nMediator:中介者nMemento:備忘錄nObserver:觀察者nState:狀態nStrategy:策略nTemplate Method:模板方法nVisotor:訪問者設計模式設計模式實例:實例:意圖意圖考慮數

6、據共享和封裝,保證一個類僅有一個實例,并在提供各種公共操作的基礎上提供一個該實例的全局訪問方法。要想保證一個類只有一個實例,需要做到:n必須能夠實例化這個類n必須阻止其它的類來隨意實例化這個類有了這個實例以后,需要提供一個該實例的全局訪問方法,這和該實例的保存位置有關。設計模式設計模式實例:實例:設計模式設計模式實例:實例:適用性適用性在下列情況下可使用Singleton模式:n當類只能有一個實例且客戶可以從一個公共方法訪問它時。n當這個唯一實例應該是可通過子類繼承來擴展的,并且客戶應該無需更改代碼就能使用一個子類的實例時。 結構結構設計模式設計模式實例:實例:設計模式設計模式實例:實例:示例

7、一:示例一:public class Runtime private static Runtime currentRuntime = new Runtime();private Runtime()/.public static Runtime getRuntime() return currentRuntime; . 示例二:示例二: SingletonTest.javaSingletonSingleton模式優點:模式優點:n對唯一實例的受控訪問:對唯一實例的受控訪問:因為Singleton類封裝它的唯一實例,所以它可以嚴格地控制客戶怎樣以及何時訪問它。n允許對操作和表示的精化:允許對操作和

8、表示的精化: Singleton類可以有子類,而且用這個擴展類的實例來配置一個應用是很容易的。你可以用你所需要的類的實例在運行時刻配置應用。n比靜態方法(類操作)更靈活:比靜態方法(類操作)更靈活:另一種封裝單件功能的方式是使用靜態方法。但是,使用靜態方法需要考慮同步問題,也容易導致內存數據不一致的問題。設計模式設計模式實例:實例:vMVC概述概述vWEB應用的兩種開發模式應用的兩種開發模式vMVC操作順序操作順序vMVC優點優點vMVC的適用性的適用性設計模式設計模式實例:實例:視圖控制器控制器模型int value=1MVC概述概述設計模式設計模式實例:實例:nMVC模式最初使用Small

9、Talk開發,后來在Swing組件庫中廣泛應用。n該模式采用一個圖形化對象并將其任務分解成三部分:1.控制器控制器:觸發一個對組件的改變。2.模型模型:提供修改、訪問數據的方法。3.視圖視圖:提供當前數據的直觀顯示。MVC概述概述設計模式設計模式實例:實例:設計模式設計模式實例:實例:JSP + JavaBeanModel1的主要特點n表現層用HTML或JSP。nJSP文件還負責所有的業務和處理邏輯nJSP直接用代碼訪問數據或JSP通過JavaBean存取數據。n以頁面為中心,應用程序的業務邏輯和程序流程都在頁面中出現。nJSP要跳轉到別的頁面,通過超級鏈接或Form表單的action實現。設

10、計模式設計模式實例:實例:設計模式設計模式實例:實例:nJSP不僅負責表示邏輯,還負責控制邏輯n大型項目中如果采取此方式,每個開發小組必須了解其它小組開發的所有頁面的詳細信息,否則對頁面的修改將會破壞應用程序的流程。n當輸出設備不同時(比如股票信息輸出到顯示器、手機、PDA上),需要采用不同的輸出格式(即不同的視圖),那么用此方式JSP不僅要判定設備的類型,而且要為不同類型的設備提供正確的顯示格式。Model1的缺點設計模式設計模式實例:實例:JSP + JavaBean +Servlet設計模式設計模式實例:實例:MVC模型模型在一個典型的J2EE Web應用中,MVC設計模式包括三個部分:

11、n模型(模型(Model): 用于封裝數據,一般是關系數據庫或EJB。n視圖(視圖(View): 數據的表現組件,通常就是JSP頁面,也可以是GUI,可以有多個。n控制器(控制器(Controller): 接受用戶動作,負責統一管理。一般是Servlet。n在一個典型的企業級應用企業級應用中,經常需要用多種類型的接口來支持多種類型的用戶。n比如,一個網上商店可能需要:1.為網上顧客提供HTML前端,2.為無線用戶提供WML前端,3.為系統管理員提供JFC/Swing GUI,4.為供應商提供基于XML的Web service。設計模式設計模式實例:實例:MVC模型模型HTMLViewWMLVi

12、ewJFC/SwingViewXML-basedView企業信息系統企業信息系統傳統傳統Web用戶用戶無線用戶無線用戶系統管理員系統管理員B2B用戶用戶設計模式設計模式實例:實例:MVC模型模型nModel含有應用程序的功能核心,表示應用程序的狀態,它不管View和Controller。nJavaBean就適合作為Model,可以用來設計應用程序的大部分業務邏輯,能與數據庫或文件系統進行交互,負責維護應用程序的數據。MVC模型:模型:Model設計模式設計模式實例:實例:MVC模型:模型:View設計模式設計模式實例:實例:nView把應用程序的數據通過界面展示給用戶。nView可以讀取Mod

13、el的數據,但不可修改。n當用戶修改Model數據時,會通知View,以便用戶看到最新的數據信息。nJSP用于實現此目的,開發者不用知道也不必去關心數據庫發生了什么變化或者業務邏輯的詳細情況。n注意:JSP中應盡可能少地使用Java代碼。MVC模型:模型:Controller設計模式設計模式實例:實例:控制器的作用是處理請求、創建JavaBean或創建供JSP使用的對象。通常,控制器還決定把用戶請求轉交給哪一個界面組件(View)。n用于對用戶的輸入進行響應。n它創建Model并提供輸入。nServlet可同時兼有Java和HTML代碼,可以接收來自客戶端的HTTP請求,根據此請求決定創建哪些

14、必要的JavaBean,并能把Model的數據修改通知View。1.在控制器被用戶觸發時,它將把變化傳達給模型;2.模型改變該數據并將新數據推給適當的視圖3.視圖接收新數據并以新的圖像或表格形式顯示數據。MVC操作順序操作順序設計模式設計模式實例:實例:n將核心數據的存取、數據表示和控制邏輯三者分離開來,可針對多種用戶設計多個視圖,以便共享同樣的企業數據模型。nWeb設計人員可以集中于使用JSP來開發UI表示數據,而代碼開發人員可以使用Servlet編寫執行任務的代碼,這樣有利于縮短開發周期。MVC的優點的優點設計模式設計模式實例:實例:nWeb頁面需要根據用戶在運行時提供的信息進行動態定制定制。nWeb站點上的信息需要經常變動變動。

溫馨提示

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

評論

0/150

提交評論