




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、數(shù)學(xué)與計算機(jī)學(xué)院實驗報告(20/ 20 學(xué)年第 學(xué)期)課程名稱軟件設(shè)計模式課程代碼6014859實驗時間年月日指導(dǎo)單位西華大學(xué)數(shù)學(xué)與計算機(jī)學(xué)院軟件工程系指導(dǎo)教師學(xué)生姓名年級2012 級學(xué)號專 業(yè)軟件工程成績實驗名稱行為型模式實驗-1實驗地點(diǎn)6a-418實驗類型實驗學(xué)時2學(xué)時實驗日期2014-12-7實驗?zāi)康暮鸵髮嶒災(zāi)康模豪斫庑袨樾湍J皆诓煌膶ο笾g劃分責(zé)任和算法的抽象化。行為型模式不僅僅關(guān)注類; 象的結(jié)構(gòu),而且重點(diǎn)關(guān)注它們之間的相互作用。理解并掌握行為型模式分為類行為型模式和對象行 模式兩種。掌握職責(zé)鏈模式、命令模式、解釋器模式、迭代器模式、中介者模式、備忘錄模式、觀3 模式、狀態(tài)模式、策
2、略模式、模板方法模式、訪問者模式等模式的定義、結(jié)構(gòu)和應(yīng)用。實驗要求:完成給出的模式模型結(jié)構(gòu),指出相應(yīng)的角色;完成相應(yīng)的代碼編寫。實驗環(huán)境(實驗設(shè)備)NetBeans IDE 8.0實驗內(nèi)容1.貓、狗與老鼠假設(shè)貓是老鼠和狗的觀察目標(biāo),老鼠和狗是觀察者,貓叫老鼠跑,狗也跟著叫。請使用觀察者模式 該過程。實驗過程一,相應(yīng)的角色:主題:Mysubject具體主題:Cat具體的觀察者:Mouse,Dog二,Uml類圖:注銷方法public void detach(MyObserver observer)(observers.remove(observer);public abstract void cr
3、y(); /抽象通知方法MyObserver.java: package貓狗老鼠;public interface MyObserver (public void response();Cat.java:package貓狗老鼠;public class Cat extends MySubject(public void cry()(System.out.println(貓叫!);System.out.println();for(Object obs:observers)(MyObserver)obs).response();Dog.java:package貓狗老鼠;public class D
4、og implements MyObserver(public void response()(System.out.println(狗跟著叫!);Mouse.java:package貓狗老鼠;public class Mouse implements MyObserver(public void response()(System.out.println(老鼠努力逃跑!);貓狗老鼠.java:package貓狗老鼠;public class貓狗老鼠public static void main(String args) ( MySubject subject=new Cat();MyObse
5、rver obs1,obs2,obs3;obs1=new Mouse();obs2=new Mouse();obs3=new Dog();subject.attach(obsl);subject.attach(obs2);subject.attach(obs3);subject.cry();結(jié)果截圖:2.電視機(jī)遙控器電視機(jī)是請求的接收者,遙控器是請求的發(fā)送者,遙控器上有一些按鈕,不同的按鈕對應(yīng)電視彳 不同操作。抽象命令角色由一個命令接口來扮演,有三個具體的命令類實現(xiàn)了抽象命令接口,這三, 體命令類分別代表三種操作:打開電視機(jī)、關(guān)閉電視機(jī)和切換頻道。顯然,電視機(jī)遙控器就是一個的命令模式應(yīng)用實例。
6、實驗過程一,相應(yīng)的角色:接收者:Television命令:AbstractCommand具體命令:TVChangeCommand,TVOpenCommand,TVCloseCommand請求者:Controller二,Uml類圖:Tel e-visi DJiTVClcs -CzaniHJiitv : TelevisionTVOpenCcmima.nd )Ccnstru TVChangeCommand )+ Tel e-visi DJiTVClcs -CzaniHJiitv : TelevisionTVOpenCcmima.nd )Ccnstru TVChangeCommand )+ Const
7、ru ctor TVCI DseCom m and )+ l mplement ex-ecutE )+open ):void十dose ):vcidl+changeChannel):voidTVChaji e ECcmnaiLtv : TelevisionCm troll s-r:AbstracfcCommand:AbstracfcCommand:Abstra ctCc-mma nddDSreCDmmandchangeCcmimia.n d : AbsiTBctCommand+ Ccnstru ctDT Controller A bsta ctC-D m m a n d cpEnCommand
8、, AbstractConi m a nd d DseCDmms nd. AbstrajctComrnand chs ng eCcmirrtan-+open ()change )()+ main String sirgs|) : void+ main String sirgs|) : void+ encrypt String plain Text) : String三,相應(yīng)的代碼:AbstractCommand.javapackage電視機(jī)遙控器;public interface AbstractCommand public void execute();Cipher.javapackage電
9、視機(jī)遙控器;public interface Cipher public String encrypt(String plainText);Controller.javapackage電視機(jī)遙控器;public class Controller private AbstractCommand openCommand,closeCommand,changeCommand;public Controller(AbstractCommand openCommand,AbstractCommandcloseCommand,AbstractCommand changeCommand)this.openC
10、ommand=openCommand;this.closeCommand=closeCommand;this.changeCommand=changeCommand;public void open()openCommand.execute();public void change()changeCommand.execute();public void close()closeCommand.execute();TVChangeCommand.javapackage電視機(jī)遙控器;public class TVChangeCommand implements AbstractCommand p
11、rivate Television tv;public TVChangeCommand()tv = new Television();public void execute()tv.changeChannel();TVCloseCommand.javapackage電視機(jī)遙控器;public class TVCloseCommand implements AbstractCommandprivate Television tv;public TVCloseCommand()tv = new Television();public void execute()tv.close();TVOpenC
12、ommand .javapackage電視機(jī)遙控器;public class TVOpenCommand implements AbstractCommandprivate Television tv;public TVOpenCommand()tv = new Television();public void execute()tv.open();Television.javapackage電視機(jī)遙控器;public class Television public void open()System.out.println(打開電視機(jī)!);public void close()System.
13、out.println(關(guān)閉電視機(jī)!);public void changeChannel()System.out.println(切換電視頻道!);電視機(jī)遙控器javapackage電視機(jī)遙控器;public class電視機(jī)遙控器public static void main(String args) AbstractCommand openCommand,closeCommand,changeCommand;openCommand = new TVOpenCommand();closeCommand = new TVCloseCommand();changeCommand = new T
14、VChangeCommand();Controllercontrol=newController(openCommand,closeCommand,changeCommand);control.open();control.change();control.close();運(yùn)行截圖:的由-電視機(jī)曷衿囂【run) 88run:打開韋視機(jī)!切揍主拆祝道!是閉電銀的!成,構(gòu)建忌對間:莎)3.排序策略某系統(tǒng)提供了一個用于對數(shù)組數(shù)據(jù)進(jìn)行操作的類,該類封裝了對數(shù)組的常見操作, 如查找數(shù)組元素、對數(shù)組元素進(jìn)行排序等?,F(xiàn)以排序操作為例,使用策略模式設(shè)計該數(shù) 組操作類,使得客戶端可以動態(tài)地更換排序算法,可以根據(jù)
15、需要選擇冒泡排序或選擇排 序或插入排序,也能夠靈活地增加新的排序算法。實驗過程一,相應(yīng)的角色:策略:Sort具體策略:BubbleSort,InsertionSort,Quicksort,SelectionSort,上下文:ArrayHandler,XMLUtil,ArrayHandler二,Uml類圖:EuLBl eSortIns E-rticnSortj - - - -.i4+ lmplEmEnt sort i nt arr|) : intfl+ lmplBmEn s&rt (int aJTIIJ : intQ4 4D-Sort+ sort int sirQ) : intQSeiect i
16、cnSort/ scrtObj+ lmplement sort (int sjt) : intflQui cJcEort+ lmplement sort int sitQ):intfl+sort (int sjt,intp, int r):void+partition inta J,int p. int r) :int+swap int aQ.inti. int j):void+ main String sigsQ) : void三.相應(yīng)的代碼ArrayHandler .java package排序策略; public class ArrayHandler (ArrayHajtil ex-so
17、rtObj : Sort+ SrDrt (int sjtt1): intfl+ SrEtSortObj (SsTt SrortObj) : voidBILLtil+ getBean ) : Objectprivate Sort sortObj;public int sort(int arr)sortObj.sort(arr);return arr;P_, this.sortObj = sortObj;BubbleSort .javapackage排序策略;public class BubbleSort implements Sortpublic int sort(int arr)int len
18、=arr.length;for(int i=0;ilen;i+)for(int j=i+1;jarrj)temp=arrj;arrj=arri;) arrfSystem.out.println(冒泡排序”); return arr;InsertionSort.javapackage排序策略;public class InsertionSort implements Sortpublic int sort(int arr)int len=arr.length;for(int i=1;i0;j-)if(arrj-1temp)arrj=arrj-1;elsebreak;arrj=temp;Syste
19、m.out.println(插入排序”); return arr;QuickSor.javapackage排序策略;public class QuickSort implements Sortpublic int sort(int arr)System.out.println(快速排序);sort(arr,0,arr.length-1); return arr;war,皿,int q=0;if(pr)q=partition(arr,p,r);sort(arr,p,q-1);sort(arr,q+1,r);public int partition(int a, int p, int r)int
20、x=ar;int j=p-1;for(int i=p;i=r-1;i+)if(ai=x)j+;*swap(a,j+1,r);return j+1;public void swap(int a, int i, int j)int t = ai;ai = aj;aj = t;SelectionSort .javapackage排序策略;public class SelectionSort implements Sortpublic int sort(int arr)int len=arr.length;int temp;for(int i=0;ilen;i+)temp=arri;int j;int
21、 samllestLocation=i;for(j=i+1;jlen;j+)if(arrjtemp)temp=arrj;samllestLocation=j;arrsamllestLocation=arri; arri=temp;System.out.println(選擇排序”); return arr;Sort .javapackage排序策略;public interface Sort (public abstract int sort(int arr);XMLUtil.javapackage排序策略;import javax.xml.parsers.*;import org.w3c.do
22、m.*;import org.xml.sax.SAXException;import java.io.*;public class XMLUtil (public static Object getBean() try創(chuàng)建文檔對象DocumentBuilderFactory dFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = dFactory.newDocumentBuilder();Document doc;doc = builder.parse(new File(config.xml);獲取包含類名的文本節(jié)點(diǎn)NodeList nl = doc.getElementsByTagName(className);Node classNode=nl.item(0).getFirstChild();String cName=classNode.getNodeValue();/通過類名生成實例對象并將其返回Class c=Class
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 員工簽員工合同范本
- 倆兄弟合伙開店合同范本
- 與他人合伙經(jīng)營合同范本
- 共享汽車租車合同范本
- 冷鏈購銷合同范本
- 合伙出資金合同范本
- 員工協(xié)議簡易合同范本
- 合同范本水印有問題
- 共同建房合同范本
- 廠房質(zhì)押合同范本
- 三年級下冊豎式脫式計算
- 七年級數(shù)學(xué)蘇科版下冊 101 二元一次方程 課件
- 《財務(wù)風(fēng)險的識別與評估管理國內(nèi)外文獻(xiàn)綜述》
- ??谑写媪糠抠I賣合同模板(范本)
- 經(jīng)典文學(xué)作品中的女性形象研究外文文獻(xiàn)翻譯2016年
- 高爐煤氣安全知識的培訓(xùn)
- 2008 年全國高校俄語專業(yè)四級水平測試試卷
- 需求供給與均衡價格PPT課件
- 金融工程鄭振龍課后習(xí)題答案
- 時間單位換算表
- DTSD342-9N說明書(精編版)
評論
0/150
提交評論