




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
UNIT21設計模式導論主講人:譚成予副教授武漢大學計算機學院E-MAIL:nadinetan@163.com“NexttoMyLife,SoftwareIsMyPassion”——RobertC.Martin.
懂了設計模式,就懂了面向對象分析和設計(OOA/D)的精要。反之好像也可能成立。道可道,非常道。道不遠人,設計模式亦然如此。2模式與設計模式描述設計模式應用設計模式解決設計問題選擇設計模式使用設計模式常用設計模式簡介本講的提綱31.1實例體會:簡單工廠模式下
的運算器程序編寫程序實現以下的功能:計算器控制臺程序,要求輸入兩個操作數和一個運算符。
該程序采用簡單工廠模式處理!GetResult()OperationGetResult()OperationAddGetResult()OperationSubGetResult()OperationMulGetResult()OperationDivGetResult()OperationFactory41.2模式與設計模式ChristopherAlexander:每一個模式描述了一個在我們周圍不斷重復發生的問題,以及該問題的解決方案的核心。這樣,你就能一次又一次地使用該方案而不必重復勞動。(他說的是城市和建筑模式)模式的四個基本要素:模式名稱:唯一標識模式,一個助記名。
問題:描述了應該在何時使用模式,特定的設計問題。解決方案:描述了設計的組成成分,以及它們之間的相互關系、職責和協作方式。
效果:模式應用的效果及使用模式應權衡的問題。模式效果對系統的靈活性、擴充性或可移植性的影響。51.3設計模式解析設計模式之于面向對象系統的設計和開發的作用就有如數據結構之于面向過程開發的作用一般!面向對象系統的分析和設計實際上追求的就是兩點,一是高內聚(Cohesion),而是低耦合(Coupling)。面向對象的原則:封裝、繼承和多態、面向接口編程、優先使用組合而不是繼承、將抽象和實現分離的思想。61.3設計模式解析設計模式體現的是一種思想,而思想則是指導行為的一切,理解和掌握了設計模式,并不是說記住了23種(或更多)設計場景和解決策略(實際上這也是很重要的一筆財富),實際接受的是一種思想的熏陶和洗禮,等這種思想融入到了你的思想中后,你就會不自覺地使用這種思想去進行你的設計和開發,這一切才是最重要的。72描述設計模式設計模式的目的:設計復用!
圖形符號:遠遠不夠,只是將設計過程的結果簡單記錄為類和對象之間的關系。用統一格式描述設計模式,每一個模式根據模板被封為若干部分。模板具有統一的信息描述結構:模式名和分類:簡潔地描述了模式的本質意圖:回答問題“設計模式是做什么的?原理和意圖?”別名動機:說明設計問題以及使用模式中的類、對象來解決該問題的特定場景。該場景將幫助你理解對模式的描述。適用性:什么情況下使用該設計模式?82描述設計模式用統一格式描述設計模式,每一個模式根據模板被封為若干部分。模板具有統一的信息描述結構:結構:采用基于對象建模技術的表示法對模式中的類進行圖形描述。參與者:設計模式中的類和/或對象以及它們各自的職責。協作:模式的參與者怎樣協作以實現它們的職責。效果:模式怎樣支持它的目標?使用模式的效果和所需做的權衡舍取?系統結構的哪些方面可以獨立改變?實現:實現模式時需要的提示、技術要點以及以避免的缺陷,以及實現語言存在的問題。92描述設計模式用統一格式描述設計模式,每一個模式根據模板被封為若干部分。模板具有統一的信息描述結構:代碼示例:實現該模式的代碼片段。已知應用:實際系統中發現的模式的例子。相關模式:關系緊密的模式有哪些?不同之處在哪里?如何一起使用?103應用設計模式解決設計問題尋找合適的對象:面向對象設計最困難的部分:將系統分解為對象集合,這個過程中需要考慮封裝、粒度、依賴關系、靈活性、性能、演化、復用等因素。雖然設計的許多對象來源與現實世界的分析模型,但設計結果中的類通常在現實世界中并不存在。設計模式幫你確定不明顯的抽象和描述這些抽象的對象。例如Strategy模式描述了怎樣實現空間互換的算法族。113應用設計模式解決設計問題決定對象的粒度:Fa?ade模式描述了怎樣用對象表示完整的子系統;Flyweight描述了如何支持大量的最小粒度的對象等。指定對象接口:操作的型構(對象聲明的每一個操作的操作名、作為參數的對象和返回值)的集合就是對象的接口。描述對象的實現:OMT表示法123應用設計模式解決設計問題運用復用機制:優先使用對象組合,而不是類繼承:功能復用最常用的技術是類繼承(白箱復用,編譯時靜態定義)和對象組合(黑箱復用,運行時刻動態定義)委托:接收請求的對象把操作委托給它的代理者,例如在類A中保存一個類B的實例,來代理類B的特定操作。對象組合的特例。參數化類型:非嚴格的面向對象功能復用技術,即用類屬或模板。關聯運行時刻和編譯時刻的結構:代碼結構在編譯時刻就被確定下來,它由固定繼承關系的類組成。而運行時刻結構是由快速變化的通信對象網絡組成。二者是獨立的!133應用設計模式解決設計問題設計應支持變化
可能引發重新設計的一般原因:通過顯式地指定一個類來創建對象:AbstractFactory、FactoryMethod、Prototype對特殊操作的依賴:ChainofResposibility、Command對硬件和軟件平臺的依賴:
AbstractFactory、Bridge對對象表示或實現的依賴:AbstractFactory、Bridge、Memento、Proxy算法依賴:Builder、Iterator、Strategy、TemplateMethod、Visitor143應用設計模式解決設計問題設計應支持變化
可能引發重新設計的一般原因:緊耦合:AbstractFactory、Command、Mediator、Observer、ChainofResponisibility通過生成子類來擴充功能:Bridge、ChainofResposibility、Composite、Decorator、Observer、Strategy不能方便的對類修改:
Adaptor、Decorator、Visitor154選擇設計模式考慮設計模式是怎樣解決設計問題的瀏覽模式的意圖部分研究模式怎樣相互關聯研究目的相似的模式檢查重新設計的原因考慮你的設計中哪些是可變的165使用設計模式瀏覽一遍模式回頭研究結構部分、參與者部分和協作部分看代碼示例部分,分析該模式代碼實例選擇模式參與者的名字,使得它們在上下文中有意義定義類定義模式中專用于應用的操作名稱實現執行模式中責任和協作的操作176常用設計模式簡介共23種模式,按照目的相似分為三類創建型設計模式:描述實例化對象的相關技術,解決創建對象的有關問題結構型設計模式:描述在軟件系統中組織類和對象的方法,避免在一個類被賦予過多職責而破壞類的封裝型和信息的隱藏,以及類之間功能重疊的問題行為設計模式:負責分配對象的職責,為對象間協作建模提供有效的策略186常用設計模式簡介創建型設計模式AbstractFactory工廠模式
:為創建一系列相關的或者相互依賴的對象配置接口,而不必執行它們具體的類。支持設計可變的部分:產品對象家族
客戶類和工廠類分開。消費者任何時候需要某種產品,只需向工廠請求即可。消費者無須修改就可以接納新產品。缺點是當產品修改時,工廠類也要做相應的修改。如:如何創建及如何向客戶端提供。196常用設計模式簡介創建型設計模式BuilderMethod建造模式
:將復雜的對象創建與它的表示分離,使用同樣的構建過程可以創建不同的表示。支持設計可變的部分:如何創建一個組合對象
將產品的內部表象和產品的生成過程分割開來,從而使一個建造過程生成具有不同的內部表象的產品對象。建造模式使得產品內部表象可以獨立的變化,客戶不必知道產品內部組成的細節。建造模式可以強制實行一種分步驟進行的建造過程。206常用設計模式簡介創建型設計模式FactoryMethod工廠方法模式:定義一個創建對象的接口,但卻讓一個子類來決定具體實例化哪一個類。支持設計可變的部分:被實例化的子類
核心工廠類不再負責所有產品的創建,而是將具體創建的工作交給子類去做,成為一個抽象工廠角色,僅負責給出具體工廠類必須實現的接口,而不接觸哪一個產品類應當被實例化這種細節。
216常用設計模式簡介創建型設計模式Prototype原始模型模式:使用原型實例指定創建對象的種類,而通過拷貝這個原型實例來創建新的實例。支持設計可變的部分:被實例化的類
原始模型模式允許動態的增加或減少產品類,產品類不需要非得有任何事先確定的等級結構,原始模型模式適用于任何的等級結構。缺點是每一個類都必須配備一個克隆方法。
Singleton單例模式:保證在運行的應用程序中,一個類只實例化一次,并提供一個訪問它的全局訪問點。支持設計可變的部分:一個類的唯一實例
單例模式只應在有真正的“單一實例”的需求時才可使用。226常用設計模式簡介結構型設計模式Adapter適配器(變壓器)模式:把一個類的接口變換成客戶端所期望的另一種接口,從而使原本因接口不匹配而無法一起使用的兩個類那個一起使用。支持設計可變的部分:對象的接口
適配類可以根據參數返還一個合適的實例給客戶端。
Bridge橋梁模式:將一個復雜對象的構建與它的表示分離,使得二者可以獨立變化。支持設計可變的部分:對象的實現
將抽象化與實現化脫耦,使得二者可以獨立的變化,也就是說將他們之間的強關聯變成弱關聯,也就是指在一個軟件系統的抽象化和實現化之間使用組合/聚合關系而不是繼承關系,從而使兩者可以獨立的變化。
236常用設計模式簡介結構型設計模式Composite合成模式:將對象組織到樹結構中,可以用來描述整體和部分的關系。支持設計可變的部分:一個對象的結構和組成
合成模式就是一個處理對象的樹結構的模式。合成模式把部分與整體的關系用樹結構表示出來。合成模式使得客戶端把一個個單獨的成分對象和由他們復合而成的合成對象同等看待。Decorator裝飾模式:動態給一個對象增加功能,這些功能可以在動態地撤銷。支持設計可變的部分:對象的職責,不生成子類
裝飾模式以對客戶端透明的方式擴展對象的功能,是繼承關系的一個替代方案,提供比繼承更多的靈活性。動態給一個對象增加功能,這些功能可以再動態的撤消。增加由一些基本功能的排列組合而產生的非常大量的功能。
246常用設計模式簡介結構型設計模式Facade門面模式:為一個復雜系統提供了一個簡單的接口,即提供一個高層次的接口,使得系統更易于使用。每一個子系統只有一個門面類,而且此門面類只有一個實例,也就是說它是一個單例模式。但整個系統可以有多個門面類。支持設計可變的部分:一個子系統的接口Flyweight享元模式:創建共享對象的一個小型池,以共享方式高校的支持大量的細粒度對象。支持設計可變的部分:對象的存儲開銷
元模式大幅度的降低內存中對象的數量
256常用設計模式簡介結構型設計模式Proxy代理模式:給某一個對象提供一個代理對象,并由代理對象控制原來對象的引用。支持設計可變的部分:如何訪問一個對象;該對象的位置。ChainofResposibility責任鏈模式:將很多對象連接起來形成一條鏈。請求在這個鏈上傳遞,直到鏈上的某一個對象決定處理此請求為止。支持設計可變的部分:滿足一個請求的對象266常用設計模式簡介行為設計模式Command命令模式:把一個請求或者操作封裝到一個對象中,允許請求的一方和發送的一方獨立開來。支持設計可變的部分:何時、怎樣滿足一個請求
命令模式把發出命令的責任和執行命令的責任分割開,委派給不同的對象。
Interpreter解釋器模式:給定一個語言后,該模式可以定義出其文法的一種表示,并同時提供一個解釋器。支持設計可變的部分:一個語言的文法及解釋
解釋器模式將描述怎樣在有了一個簡單的文法后,使用模式設計解釋這些語句。
276常用設計模式簡介行為設計模式Interator迭代子模式:分離一個集合對象的遍歷行為,抽象出一個迭代器類來負責。支持設計可變的部分:如何遍歷、訪問一個聚合的各元素Mediator調停者模式:用一個中介對象來封裝一系列的對象交互,使得這些對象不必相互明顯作用。支持設計可變的部分:對象間怎樣交互、和誰交互?
調停者模式將對象的行為和協作抽象化,把對象在小尺度的行為上與其他對象的相互作用分開處理。286常用設計模式簡介行為設計模式Memento備忘錄模式:在不破壞封裝的前提下,捕獲一個對象內部狀態并外部化,存儲起來。支持設計可變的部分:一個對象中哪些私有信息存放在該對象之外,以及在什么時候進行存儲。Obersver觀察者模式:定義了一種一對多的依賴關系,讓多個觀察者對象同時監聽某一個主題對象。支持設計可變的部分:多個對象依賴于另外一個對象,而這些對象又如何保持一致296常用設計模式簡介行為設計模式State狀態模式:允許一個對象在其內部狀態改變時,改變行為。支持設計
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 寧波衛生職業技術學院《二十世紀西方文論》2023-2024學年第二學期期末試卷
- 廊坊燕京職業技術學院《單片機課程設計》2023-2024學年第二學期期末試卷
- 江西省南昌二中、九江一中、新余一中、臨川一中八所重點中學2025屆高三5月三模考試數學試題含解析
- 寧夏民族職業技術學院《SAS與統計分析》2023-2024學年第一學期期末試卷
- 內蒙古烏海二十二中學2025年高中畢業班下學期開學考試語文試題含解析
- 延安市延長縣2025屆三下數學期末經典試題含解析
- 南開大學《商務英語視聽說I》2023-2024學年第二學期期末試卷
- 臨床護理敏感質量指標解讀
- 二零二五最簡單山林租賃合同書
- 商場門面商鋪租賃合同書范例
- sbs改性瀝青加工工藝
- 生物的種群動態與物種演變
- GB 4351-2023手提式滅火器
- 供電局標準用電手續辦理流程(課件)
- 《行政強制法》課件
- 《清水混凝土技術》課件
- 合同自動續簽模板
- JCT170-2012 E玻璃纖維布標準
- 地表沉降監測典型報告
- 垃圾分類實施方案
- 基于單片機的噪聲檢測報警系統
評論
0/150
提交評論