《設計模式》實驗指導書_第1頁
《設計模式》實驗指導書_第2頁
《設計模式》實驗指導書_第3頁
《設計模式》實驗指導書_第4頁
《設計模式》實驗指導書_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、設計模式實驗指導書軟件學院前 言隨著面向對象技術的發(fā)展和廣泛的應用,設計模式已成為面向對象開發(fā)人員的必備技能之一。無論是面向對象的初學者還是具有一定開發(fā)經(jīng)驗的程序員,都可以通過對設計模式的學習和應用加深對面向對象思想的理解,開發(fā)出具有更好的可擴展性和復用性的軟件。本實驗指導書通過項目實例讓學生加深對設計模式的理解,在學習設計模式的同時掌握如何在實際軟件開發(fā)中運用模式,強化對設計模式的理解和掌握。實驗一:創(chuàng)建型模式設計一、實驗目的1、以本實驗指導中給定的實驗 模式為實驗實例,掌握五類“創(chuàng)建型模式”的工作原理和應用環(huán)境。2、掌握工廠方法模式(Factory Method)、抽象工廠模式(Abstr

2、act Factory)、建造者模式(Builder)、原型模式(Prototype)、單例模式(Singleton)等五類“創(chuàng)建型模式”的實驗過程。二、實驗原理1、創(chuàng)建型模式的工作原理創(chuàng)建型模式隱藏了類的實例的創(chuàng)建細節(jié),通過隱藏對象如何被創(chuàng)建和組合在一起達到使整個系統(tǒng)獨立的目的。 創(chuàng)建型模式分為:工廠方法模式(Factory Method)、抽象工廠模式(Abstract Factory)、建造者模式(Builder)、原型模式(Prototype)、單例模式(Singleton)等五類。2、Factory Method 模式的工作原理工廠方法模式(Factory Method Patter

3、n):也叫虛擬構造器(Virtual Constructor)模式或者多態(tài)工廠(Polymorphic Factory)模式,在工廠方法模式中,工廠父類負責定義創(chuàng)建產(chǎn)品對象的公共接口,而工廠子類則負責生成具體的產(chǎn)品對象,這樣做的目的是將產(chǎn)品類的實例化操作延遲到工廠子類中完成。它的 UML 類圖如下:工廠方法模式包含如下角色:ü Product:抽象產(chǎn)品ü ConcreteProduct:具體產(chǎn)品ü Creator:抽象工廠ü Concrete Creator:具體工廠Factory Method 模式的特點為當系統(tǒng)擴展需要添加新的產(chǎn)品對象時,僅僅需要添加

4、一個 具體產(chǎn)品對象以及一個具體工廠對象,原有工廠對象不需要進行任何修改,也不需要修改客戶端,很好地符合了“開閉原則” 。3、抽象工廠模式(Abstract Factory)、建造者模式(Builder)、原型模式(Prototype)、單例模式(Singleton)的工作原理應通過教材復習。三、實驗內容1. 某系統(tǒng)提供一個簡單計算器,具有簡單的加、減、乘、除法的功能,系統(tǒng)可以根據(jù)用戶的選擇實例化相應的操作類?,F(xiàn)使用簡單工廠模式設計該系統(tǒng)。類圖如下: 2、對于上述問題修改為工廠方法模式,給定的類圖如下所示:3、某系統(tǒng)為了改進數(shù)據(jù)庫操作的性能,自定義數(shù)據(jù)庫連接對象Connection和語句對象St

5、atement,可針對不同類型的數(shù)據(jù)庫提供不同的連接對象和語句對象,如提供Oracle或SQL Server專用連接類和語句類,而且用戶可以通過主函數(shù)方式根據(jù)實際需要動態(tài)更換系統(tǒng)數(shù)據(jù)庫。使用抽象工廠模式設計該系統(tǒng)。四、實驗要求所設計的實驗程序要滿足以下兩點:1)體現(xiàn)“創(chuàng)建型模式”的工作原理;2)符合面向對象的七條設計原則。五、實驗步驟1、根據(jù)類圖寫出“三個實驗內容”的源代碼(代碼參照教材P48,實驗報告中寫出主要的幾個類)。2、上機測試程序,寫出運行結果。實驗二:結構型模式設計一、實驗目的1、以設計適配器模式(Adapter)為實驗實例,掌握“結構型模式”的工作原理、應用環(huán)境和應用方法。2、掌

6、握適配器模 式(Adapter)、橋接模式(Bridge)、組合模式(Composite) 、裝飾模式(Decorator)、外觀模式(Facade) 、享元模式(Flyweight) 、代理模式(Proxy 等七類“結構型模式”的實驗過程。二、實驗原理1、結構型模式的工作原理結構型模式(Structural Pattern)描述如何將類或者對象結合在一起形成更大的結構,就像搭積木,可以通過簡單積木的組合形成復雜的、功能更為強大的結構。結構型模式可以分為類結構型模式和對象結構型模式。 也可分為:適配器模式(Adapter)、橋接模式(Bridge)、組合模式(Composite) 、裝飾模式(

7、Decorator)、外觀模式(Facade) 、享元模式(Flyweight) 、代理模式(Proxy)等七類。2、Adapter 模式的工作原理適配器模式(Adapter Pattern) :將一個接口轉換成客戶希望的另一個接口,適配器模式使接口不兼容的那些類可以一起工作,其別名為包裝器(Wrapper)。UML 類圖如下:適配器模式包含如下角色:Target: 目標抽象類Adapter:適配器類Adaptee:適配者類3、橋接模式(Bridge)、組合模式(Composite) 、裝飾模式(Decorator)、外觀模式(Facade) 、享元模式(Flyweight) 、代理模式(Pr

8、oxy)的工作原理可仔細復習教材。三、實驗內容1、適配器模式:現(xiàn)有一個接口DataOperation定義了排序方法sort(int )和查找方法search(int , int ),已知類QuickSort的quickSort(int )方法實現(xiàn)了快速排序算法,類BinarySearch 的 binarySearch(int , int )方法實現(xiàn)了二分查找算法?,F(xiàn)使用適配器模式設計一個系統(tǒng),在不修改源代碼的情況下將類QuickSort和類BinarySearch的方法適配到DataOperation接口中。編程實現(xiàn)。2、某公司欲開發(fā)一套手機來電提示程序,在最簡單的版本中,手機在接收到來電時會

9、發(fā)出聲音來提醒用戶;在振動版本中,除了聲音外,在來電時手機還能產(chǎn)生振動;在更高級的版本中,手機不僅能夠產(chǎn)生發(fā)聲和產(chǎn)生振動,而且還會有燈光閃爍提示,現(xiàn)采用裝飾設計模式來設計,得到如圖的類圖。四、實驗要求所設計的實驗程序要滿足以下兩點:1)體現(xiàn)“創(chuàng)建型模式”的工作原理;2)符合面向對象的七條設計原則。五、實驗步驟1、根據(jù)類圖寫出“三個實驗內容”的源代碼(代碼參照教材P48,實驗報告中寫出主要的幾個類)。2、上機測試程序,寫出運行結果。實驗三:行為型模式設計(1)一、實驗目的1、以設計職責鏈模式(Chain of Responsibility)為實驗實例,掌握“行為型模式”的工作原理、應用環(huán)境和應用

10、方法。2、 掌 握 職 責 鏈 模 式 (Chain of Responsibility)、 命 令 模 式 (Command) 、 解 釋 器 模 式(Interpreter)、迭代器模式(Iterator)、中介者模式(Mediator)、備忘錄模式(Memento)、觀察者模式(Observer)、狀態(tài)模式(State)、策略模式(Strategy)、模板方法模式(Template Method)、訪問者模式(Visitor)等十一類“行為型模式”的實驗過程。二、實驗原理1、行為型模式的工作原理行為型模式(Behavioral Pattern)是對在不同的對象之間劃分責任和算法的抽象化。

11、行為型模式分為:類行為型模式和對象行為型模式兩種。其中,類的行為型模式使用繼承關系在幾個類之間分配行為,類行為型模式主要通過多態(tài)等方式來分配父類與子類的職責;對象的行為型模式則使用對象的聚合關聯(lián)關系來分配行為,對象行為型模式主要是通過對象關聯(lián)等方 式 來 分 配 兩 個 或 多 個 類 的 職 責 。 行 為 型 模 式 也 可 以 分 為 : 職 責 鏈 模 式 (Chain of Responsibility)、命令模式(Command)、解釋器模式(Interpreter)、迭代器模式(Iterator)、中介者模式(Mediator)、備忘錄模式(Memento)、觀察者模式(Obse

12、rver)、狀態(tài)模式(State)、策略模式(Strategy)、模板方法模式(Template Method)、訪問者模式(Visitor)等十一類。2、Chain of Responsibility 模式的工作原理職責鏈模式(Chain of Responsibility):為了避免將請求發(fā)送者與接收者耦合在一起,讓多個對象都有可能接收請求,將這些對象連接成一條鏈,并且沿著這條鏈傳遞請求,直到有對象處理它為止。職責鏈模式的 UML 類圖如下:職責鏈模式包含如下角色:Handler: 抽象處理者ConcreteHandler: 具體處理者3、命令模式(Command)、解釋器模式(Inter

13、preter)、迭代器模式(Iterator)、中介者模式(Mediator)、備忘 錄模式(Memento)、 觀察者模 式(Observer)、狀 態(tài)模式(State)、策 略模式(Strategy)、模板方法模式(Template Method)、訪問者模式(Visitor)的工作原理請認真復習教材。三、實驗內容1、已知某企業(yè)的采購審批是分級進行的,即根據(jù)采購金額的不同由不同層次的主管人員來審批,主任可以審批5萬元以下的(不包括5萬元)的采購單,副董事長可以審批5萬元至10萬元(不包括10萬元)的采購單,董事長可以審批10萬元至50萬元(不包括50萬元)的采購單,50萬元及以上的采購單就

14、需要開會討論決定。使用職責鏈模式模擬該審批過程。2、某電影院售票系統(tǒng)為不同類型的用戶提供了不同的打折方式(Discount),學生憑學生證課享受8折優(yōu)惠(StudentDiscount),兒童可享受減免10元的優(yōu)惠(ChildrenDiscount),VIP用戶除享受半價優(yōu)惠還可以進行積分(VIPDiscount)。使用策略模式設計該系統(tǒng)。3、某在線股票軟件需要提供如下功能:當股票購買者所購買的某支股票價格變化幅度達到5%時,系統(tǒng)將自動發(fā)送通知(包括新價格)給購買該股票的股民?,F(xiàn)使用觀察者模式設計該系統(tǒng)。四、實驗要求所設計的實驗程序要滿足以下兩點:1)體現(xiàn)“創(chuàng)建型模式”的工作原理;2)符合面向

15、對象的七條設計原則。五、實驗步驟1、根據(jù)類圖寫出“三個實驗內容”的源代碼(代碼參照教材P48,實驗報告中寫出主要的幾個類)。2、上機測試程序,寫出運行結果。四、實驗要求所設計的實驗程序要滿足以下兩點:1)體現(xiàn)“創(chuàng)建型模式”的工作原理;2)符合面向對象的七條設計原則。五、實驗步驟1、根據(jù)類圖寫出“三個實驗內容”的源代碼(代碼參照教材P48,實驗報告中寫出主要的幾個類)。2、上機測試程序,寫出運行結果。實驗四:綜合型模式設計一、實驗目的1、以設計工廠策略模式為實驗實例,掌握“混合設計模式”的工作原理、應用環(huán)境和應用方法。2、 掌 握命令鏈模式、工廠策略模式、觀察中介者模式、規(guī)格模式等“混合設計模式

16、”的實驗過程。二、實驗內容1、以工廠策略模式來設計假設一個大學實行特困生資助計劃,該計劃以保障特困生吃飯為首要目的,還會額外發(fā)放零用錢。具體會向特困生發(fā)一張飯卡,里面有兩部分資金,一部分是固定消費,必須用于食堂吃飯,另一部分金額是零用錢,可以吃飯,也可以提現(xiàn)。以工廠策略模式來設計。三、實驗原理(1)一張IC卡綁定兩個賬戶:固定賬戶和自由賬戶。(2)兩套交易扣款策略: n 固定消費場所下的消費是從IC卡中固定賬戶金額中扣除,當固定金額不夠時,差額再從自由賬戶中扣除。n 非固定消費場所下的消費都從IC卡中自由賬戶金額中扣除。工廠策略模式的 UML 類圖如下:(3)IC卡交易扣款系統(tǒng)使用了以下幾個模式 :n 策略模式:負責對扣款策略進行封裝,保證兩個策略可以自由切換,也便于對扣款策略進行擴展。例如,增加一個新的扣款策略,只需三步就可以完成,先定義一個實現(xiàn)IDeduction接口的策略類,再在策略枚舉StrategyMan中增加一個枚舉項,最后在封裝類DeductionFac

溫馨提示

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

評論

0/150

提交評論