




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、信息與管理科學學院計算機科學系實驗報告課程名稱: 軟件開發(fā)生命周期與建模 實驗名稱: 【實驗1】工廠方法模式(日志記錄器) 姓 名: 楊現(xiàn)陽,張澤浩,張金庚,張俊超,楊波,王秋波 組號: 3 班級:14級計應(yīng)四班 指導教師: 張 浩 實 驗 室: 蘭亭機房2 日 期: 2016年05月18日一、實驗?zāi)康?工廠方法模式(Factory Method Pattern)又稱為工廠模式,也叫虛擬構(gòu)造器(Virtual Constructor)模式或者多態(tài)工廠(Polymorphic Factory)模式,它屬于類創(chuàng)建型模式。通過工廠方法模式中,工廠父類負責定義創(chuàng)建產(chǎn)品對象的公共接口、工廠子類負責生成具
2、體的產(chǎn)品對象,使得產(chǎn)品類的實例化操作延遲到工廠子類中完成。通過工廠方法模式實驗,理解掌握工廠方法模式是如何超越簡單工廠模式、如何符合“開閉原則”,使得系統(tǒng)具有更強的擴展性和可維護性。二、實驗環(huán)境一臺PC機,所需軟件Win7/10、UML工具(Rose/Visio/EclipseUML/ StartUML/)、Eclipse/MyEclipse、JDK6.0等。三、實驗內(nèi)容 日志記錄器系統(tǒng):某系統(tǒng)日志記錄器要求支持多種日志記錄方式,如文件記錄、數(shù)據(jù)庫記錄等,且用戶可以根據(jù)要求動態(tài)選擇日志記錄方式,現(xiàn)使用工廠方法模式設(shè)計該系統(tǒng)。四、實驗操作過程 1分析得出日志記錄器系統(tǒng)的具體工廠類和具體產(chǎn)品類工廠
3、:日志記錄器工廠public class DatabaseLogFactory extends LogFactory public Log createLog() return new DatabaseLog();public class FileLogFactory extends LogFactory public Log createLog() return new FileLog();產(chǎn)品:日志記錄方式import javax.swing.JOptionPane;public class FileLog extends Log public void writeLog() JOptio
4、nPane.showMessageDialog(null,文件記錄方式!,14計應(yīng)四班第三組 楊現(xiàn)陽,張金庚,張俊超,張澤浩,楊波,王秋波,1); import javax.swing.JOptionPane;public class DatabaseLog extends Log public void writeLog() JOptionPane.showMessageDialog(null,數(shù)據(jù)庫記錄方式!,14計應(yīng)四班第三組 楊現(xiàn)陽,張金庚,張俊超,張澤浩,楊波,王秋波,1); 2分別對日志記錄器系統(tǒng)的產(chǎn)品類和工廠類進行抽象抽象工廠:LogFactorypublic abstract
5、class LogFactory public abstract Log createLog();抽象產(chǎn)品:Logpublic abstract class Log public abstract void writeLog();3畫出日志記錄器系統(tǒng)的工廠類的結(jié)構(gòu)圖4畫出日志記錄器系統(tǒng)的產(chǎn)品類的結(jié)構(gòu)圖5對日志記錄器系統(tǒng)的工廠類和產(chǎn)品類進行關(guān)聯(lián),畫出日志記錄器系統(tǒng)總體類圖6總結(jié)抽象出一般的工廠方法模式類結(jié)構(gòu)圖,并進行角色說明AbstractFactory為抽象工廠,ConcreteFactory1為具體工廠1,ConcreteFactory2為具體工廠2。AbstractProduct為抽象產(chǎn)品
6、,ConcreteProduct1為具體產(chǎn)品1,ConcreteProduct2為具體產(chǎn)品2。五、核心代碼與實驗結(jié)果 核心代碼:import javax.swing.JOptionPane;public class Client public static void main(String args) Log log;LogFactory logf;String tvfname=JOptionPane.showInputDialog(子工廠類名);try Class c=Class.forName(tvfname);logf=(LogFactory)c.newInstance();log=lo
7、gf.createLog();log.writeLog(); catch (ClassNotFoundException e) e.printStackTrace(); catch (InstantiationException e) e.printStackTrace(); catch (IllegalAccessException e) e.printStackTrace(); 實驗結(jié)果: 六、心得體會 問題基本解決,在軟件設(shè)計中經(jīng)常面臨著“某個對象”的創(chuàng)建工作,由于需求的變化,這個對象的具體實現(xiàn)經(jīng)常面臨著劇烈的變化,但是它卻擁有比較穩(wěn)定的接口。如果我們 使用簡單工廠,這樣會不斷地修改工廠
8、類,應(yīng)對業(yè)務(wù)變化,違反開閉原則,另外因為實例化產(chǎn)品的判斷邏輯在工廠類中,工廠類會變的越來與臃腫。工廠方法模式又稱為工廠模式,也叫虛擬構(gòu)造器(Virtual Constructor)模式或者多態(tài)工廠模式(Polymorphic Factory),定義一個用戶創(chuàng)建對象的接口,讓子類決定實例化哪一個類,工廠方法模式使一個類的實例化延遲到其子類。增加了系統(tǒng)的靈活性和擴展性。 七、組內(nèi)打分組號姓名學號班級作業(yè)成績(百分制)3楊現(xiàn)陽24計應(yīng)四班 90張澤浩27計應(yīng)四班90張金庚25計應(yīng)四班80張俊超26計應(yīng)四班80楊 波23計應(yīng)四班80王秋波22計應(yīng)四班80八、指導教師評分注:紙質(zhì)版實驗報告編輯后打印,以
9、組為單位交給學習委員,以班為單位交給老師成績: (百分制)指導教師: 張 浩 信息與管理科學學院計算機科學系實驗報告課程名稱: 軟件開發(fā)生命周期與建模 實驗名稱: 【實驗2】單例模式(身份證號申請) 姓 名: 楊現(xiàn)陽,張澤浩,張金庚,張俊超,楊波,王秋波 組號: 3 班級: 14級計應(yīng)四班 指導教師: 張 浩 實 驗 室: 蘭亭機房2 日 期: 2016年05月18日一、實驗?zāi)康?單例模式(Singleton Pattern)確保某一個類只有一個實例,而且自行實例化并向整個系統(tǒng)提供這個實例,這個類稱為單例類,它提供全局訪問的方法。單例模式的要點有三個:一是某個類只能有一個實例;二是它必須自行創(chuàng)
10、建這個實例;三是它必須自行向整個系統(tǒng)提供這個實例。通過單例模式實驗,理解掌握單例模式是如何創(chuàng)建唯一實例、如何判斷是唯一實例、如何通過公共接口對外提供單一實例。二、實驗環(huán)境一臺PC機,所需軟件Win2003/XP、UML工具(Rose/Visio/EclipseUML/ StartUML/)、Eclipse/MyEclipse、JDK6.0等。三、實驗內(nèi)容 身份證號碼系統(tǒng):在現(xiàn)實生活中,居民身份證號碼具有唯一性,同一個人不允許有多個身份證號碼,第一次申請身份證時將給居民分配一個身份證號碼,如果之后因為遺失等原因補辦時,還是使用原來的身份證號碼,不會產(chǎn)生新的號碼?,F(xiàn)使用單例模式模擬該場景。四、實驗
11、操作過程 1分析身份證號碼系統(tǒng)是如何保證在外部不能進行類的實例化身份證號碼類擁有一個私有構(gòu)造函數(shù),確保用戶無法通過new關(guān)鍵字直接實例化它。2分析身份證號碼系統(tǒng)是如何在類內(nèi)部自行創(chuàng)建該實例身份證號碼類中包含一個靜態(tài)私有被實例化的成員變量instance,以確保只有一個實例被創(chuàng)建。 3分析身份證號碼系統(tǒng)是如何對外部(向整個系統(tǒng))提供該實例身份證號碼類中包含一個靜態(tài)公有的工廠方法getInstance (),該工廠方法負責返回實例化的成員變量instance,以確保只有一個實例被創(chuàng)建。4畫出身份證號碼系統(tǒng)的總體類圖代碼:public class IdentityCardNo private sta
12、tic IdentityCardNo instance = new IdentityCardNo();public String no;private IdentityCardNo() public static IdentityCardNo getInstance ()return instance;public String getNo() return no;public void setNo(String no) this.no = no;5總結(jié)抽象出一般的單例模式類結(jié)構(gòu)圖,并進行角色說明懶漢式:餓漢式:instance靜態(tài)私有被實例化的成員變量靜態(tài)公有的工廠方法getInstance
13、 ()6餓漢式單例模式和懶漢式單例模式的比較餓漢式單例類在自己被加載時就將自己實例化。單從資源利用效率角度來講,這個比懶漢式單例類稍差些。從速度和反應(yīng)時間角度來講,則比懶漢式單例類稍好些。懶漢式單例類在實例化時,必須處理好在多個線程同時首次引用此類時的訪問限制問題,特別是當單例類作為資源控制器,在實例化時必然涉及資源初始化,而資源初始化很有可能耗費大量時間,這意味著出現(xiàn)多線程同時首次引用此類的機率變得較大,需要通過同步化機制進行控制。五、核心代碼與實驗結(jié)果核心代碼:import javax.swing.JOptionPane;public class TestCardNo public sta
14、tic void main(String args) IdentityCardNo icn1,icn2;icn1=IdentityCardNo.getInstance(); icn1.setNo(9234); JOptionPane.showMessageDialog(null, icn1Number=+icn1.getNo(),14計應(yīng)四班第三組 楊現(xiàn)陽,張金庚,張俊超,張澤浩,楊波,王秋波,1); icn2=IdentityCardNo.getInstance(); JOptionPane.showMessageDialog(null, icn2Number=+icn2.getNo(),14計應(yīng)四班第三組 楊現(xiàn)陽,張金庚,張俊超,張澤浩,楊波,王秋波,1); JOptionPane.showMessageDialog(null, icn1=icn2,14計應(yīng)四班第三組 楊現(xiàn)陽,張金庚,張俊超,張澤浩,楊波,王秋波,1);效果: 六、心得體會問題基本解決,單例模式可以保證整個系統(tǒng)中一個類只有一個實例,而且該實例易于外界訪問,從而方便對實例個數(shù)的控制并節(jié)約系統(tǒng)資源,如果只希望在系統(tǒng)中某個類的對象有且只能存在一個,單例模式是最好的解決
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 租賃戶外廣告牌合同
- 市場推廣與渠道分銷協(xié)議書
- AI輔助醫(yī)生診斷系統(tǒng)研發(fā)合作協(xié)議
- 企業(yè)客戶關(guān)系管理系統(tǒng)績效評估協(xié)議
- 養(yǎng)殖業(yè)行業(yè)知識培訓課件
- 高考語文答題技巧及方法
- 物流倉儲安全管理規(guī)范
- 企業(yè)危機公關(guān)處理與媒體應(yīng)對預案
- 高考英語題型 組合規(guī)范練習
- 餐飲服務(wù)提供合同細節(jié)
- 2024-2030年中國人絨毛膜促性腺激素(HCG)行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略分析報告
- 工業(yè)項目投資估算及財務(wù)評價附表(有計算公式)
- 北京市2024年中考英語真題【附參考答案】
- 某大學中醫(yī)學(專升本)學士學位考試復習題
- 縣醫(yī)院聘請社會監(jiān)督員實施方案(經(jīng)典版)
- 江西省數(shù)字產(chǎn)業(yè)集團有限公司招聘筆試真題2023
- DL-T+5174-2020燃氣-蒸汽聯(lián)合循環(huán)電廠設(shè)計規(guī)范
- 弟子規(guī)帶拼音全文課件省公共課一等獎全國賽課獲獎?wù)n件
- 2024年揚州市職業(yè)大學單招職業(yè)適應(yīng)性測試題庫附答案
- 猜猜我有多愛你-繪本故事
- 人教版pep小學四年級英語下冊全冊完整
評論
0/150
提交評論