版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、第3章 創(chuàng)建型模式實訓3.3 實訓練習3.3.2 填空題1. 某系統(tǒng)提供一個簡單計算器,具有簡單的加法和減法功能,系統(tǒng)可以根據(jù)用戶的選擇實例化相應的操作類?,F(xiàn)使用簡單工廠模式設計該系統(tǒng),類圖如圖1所示:圖1 類圖在圖1中,Operation是抽象類,其中定義了抽象方法getResult(),其子類AddOperation用于實現(xiàn)加法操作,SubOperation用于實現(xiàn)減法操作,Calculator是簡單工廠類,工廠方法為createOperation(),該方法接收一個char類型的字符參數(shù),如果傳入的參數(shù)為“+”,工廠方法返回一個AddOperation類型的對象,如果傳入的參數(shù)為“-”,
2、則返回一個SubOperation類型的對象?!綣ava代碼】abstract class Operationprotected int numberA;protected int numberB;/ numberA和numberB的Setter方法和Getter方法省略public (1) int getResult();class AddOperation extends Operationpublic int getResult()return numberA + numberB;class SubOperation extends Operationpublic int getResu
3、lt()return numberA - numberB;class Calculatorpublic (2) createOperation(char operator)Operation op = null; (3) case +:op = (4) ;break;case -:op = (5) ;break; (6) ;class Testpublic static void main(String args)int result;Operation op1 = Calculator.createOperation(+);op1.setNumberA(20);op1.setNumberB(
4、10);result = (7) ;System.out.println(result);2. 某軟件公司欲開發(fā)一個數(shù)據(jù)格式轉(zhuǎn)換工具,可以將不同數(shù)據(jù)源如txt文件、數(shù)據(jù)庫、Excel表格中的數(shù)據(jù)轉(zhuǎn)換成XML格式。為了讓系統(tǒng)具有更好的擴展性,在未來支持新類型的數(shù)據(jù)源,開發(fā)人員使用工廠方法模式設計該轉(zhuǎn)換工具的核心類。在工廠類中封裝了具體轉(zhuǎn)換類的初始化和創(chuàng)建過程,客戶端只需使用工廠類即可獲得具體的轉(zhuǎn)換類對象,再調(diào)用其相應方法實現(xiàn)數(shù)據(jù)轉(zhuǎn)換操作。其類圖如圖1所示:圖1 類圖在圖1中,ConvertorCreator是抽象工廠接口,它聲明了工廠方法getConvertor(),在其子類中實現(xiàn)該方法,用于創(chuàng)
5、建具體的轉(zhuǎn)換對象;Convertor是抽象產(chǎn)品接口,它聲明了抽象數(shù)據(jù)轉(zhuǎn)換方法transform(),在其子類中實現(xiàn)該方法,用于完成具體的數(shù)據(jù)轉(zhuǎn)換操作。類DBConvertor和TXTConvertor分別用于將數(shù)據(jù)庫中的數(shù)據(jù)和txt文件中的數(shù)據(jù)轉(zhuǎn)換為XML格式?!綣ava代碼】interface ConvertorCreator (1) ;interface Convertorpublic String transform();class DBConvertorCreator implements ConvertorCreatorpublic Convertor getConvertor()
6、(2) ;class TXTConvertorCreator implements ConvertorCreatorpublic Convertor getConvertor() (3) ;class DBConvertor implements Convertorpublic String transform()/實現(xiàn)代碼省略class TXTConvertor implements Convertorpublic String transform()/實現(xiàn)代碼省略class Testpublic static void main(String args)ConvertorCreator c
7、reator; (4) ;creator = new DBConvertorCreator();convertor = (5) ;convertor.transform(); 如果需要針對一種新的數(shù)據(jù)源進行數(shù)據(jù)轉(zhuǎn)換,該系統(tǒng)至少需要增加 (6) 個類。工廠方法模式體現(xiàn)了以下哪些面向?qū)ο笤O計原則? (7) 。(多選)A. 開閉原則 B. 依賴倒轉(zhuǎn)原則 C. 接口隔離原則 D. 單一職責原則 E. 合成復用原則3. 某手機游戲軟件公司欲推出一款新的游戲軟件,該軟件能夠支持Symbian、Android和Windows Mobile等多個主流的手機操作系統(tǒng)平臺,針對不同的手機操作系統(tǒng),該游戲軟件提供了
8、不同的游戲操作控制類和游戲界面控制類,并提供相應的工廠類來封裝這些類的初始化。軟件要求具有較好的擴展性以支持新的操作系統(tǒng)平臺,為了滿足上述需求,采用抽象工廠模式進行設計所得類圖如圖1所示:圖1 類圖 在該設計方案中,具體工廠類如SymbianFactory用于創(chuàng)建Symbian操作系統(tǒng)平臺下的游戲操作控制類SymbianOperationController和游戲界面控制類SymbianInterfaceController,再通過它們的業(yè)務方法來實現(xiàn)對游戲軟件的初始化和運行控制?!綣ava代碼】interface AbstractFactorypublic OperationControll
9、er getOperationController();public InterfaceController getInterfaceController();interface OperationControllerpublic void init();/其他方法聲明省略interface InterfaceControllerpublic void init();/其他方法聲明省略class SymbianFactory implements AbstractFactorypublic OperationController getOperationController() (1) ;pu
10、blic InterfaceController getInterfaceController() (2) ;class AndroidFactory (3) public OperationController getOperationController()return new AndroidOperationController();public InterfaceController getInterfaceController()return new AndroidInterfaceController();class SymbianOperationController (4) p
11、ublic void init() /實現(xiàn)代碼省略/其他方法聲明省略class AndroidOperationController (5) public void init() /實現(xiàn)代碼省略/其他方法聲明省略class SymbianInterfaceController implements InterfaceControllerpublic void init() /實現(xiàn)代碼省略/其他方法聲明省略class AndroidInterfaceController implements InterfaceControllerpublic void init() /實現(xiàn)代碼省略/其他方法聲明
12、省略class Testpublic static void main(String args)AbstractFactory af; (6) oc; (7) ic;af = new SymbianFactory();oc = (8) ;ic = (9) ;oc.init();ic.init(); 如何需要在上述設計方案中增加對Windows Mobile操作系統(tǒng)的支持,需對該設計方案進行哪些調(diào)整,簡單說明實現(xiàn)過程。4. 某軟件公司欲開發(fā)一個音頻和視頻播放軟件,為了給用戶使用提供方便,該播放軟件提供了多種界面顯示模式,如完整模式、精簡模式、記憶模式、網(wǎng)絡模式等。在不同的顯示模式下主界面的組成元
13、素有所差異,如在完整模式下將顯示菜單、播放列表、主窗口、控制條等,在精簡模式下只顯示主窗口和控制條,而在記憶模式下將顯示主窗口、控制條、收藏列表等?,F(xiàn)使用建造者模式設計該軟件,所得類圖如圖1所示:圖1 類圖在該設計方案中,MainScreen是播放器的主界面,它是一個復合對象,包括菜單、播放列表、主窗口和控制條等成員。ModeBuilder是一個抽象類,定義了一組抽象方法buildXXX()用于逐步構造一個完整的MainScreen對象,getScreen()是工廠方法,用于返回一個構造好的MainScreen對象。ScreenModeController充當指揮者,用于指導復合對象的創(chuàng)建,其
14、中construct()方法封裝了具體創(chuàng)建流程,并向客戶類返回完整的產(chǎn)品對象?!綣ava代碼】class MainScreenpublic String menu;public String playList;public String mainWindow;public String controlBar; (1) class ModeBuilderprotected MainScreen screen = new MainScreen();public abstract void buildMenu();public abstract void buildPlayList();public
15、 abstract void buildMainWindow();public abstract void buildControlBar();public MainScreen getScreen() (2) ; class FullModeBuilder extends ModeBuilderpublic void buildMenu() /實現(xiàn)代碼省略public void buildPlayList() /實現(xiàn)代碼省略 public void buildMainWindow() /實現(xiàn)代碼省略 public void buildControlBar() /實現(xiàn)代碼省略 class Si
16、mpleModeBuilder extends ModeBuilderpublic void buildMenu() /實現(xiàn)代碼省略public void buildPlayList() /實現(xiàn)代碼省略 public void buildMainWindow() /實現(xiàn)代碼省略 public void buildControlBar() /實現(xiàn)代碼省略 class ScreenModeControllerprivate ModeBuilder mb;public void setModeBuilder( (3) )this.mb = mb;public MainScreen construct
17、()MainScreen ms;mb.buildMenu();mb.buildPlayList();mb.buildMainWindow();mb.buildControlBar();ms= (4) ;return ms;class Testpublic static void main(String args)ScreenModeController smc = (5) ;ModeBuilder mb;mb = new FullModeBuilder(); /構造完整模式界面MainScreen screen;smc.setModeBuilder( (6) );screen = (7) ;S
18、ystem.out.println(screen.menu);/其他代碼省略5. 某數(shù)據(jù)處理軟件需要增加一個圖表復制功能,在圖表對象中包含一個數(shù)據(jù)集對象,用于封裝待顯示的數(shù)據(jù),可以通過界面的“復制”按鈕將該圖表復制一份,復制后可以得到新的圖表對象,用戶可以修改新圖表的編號、顏色和數(shù)據(jù)?,F(xiàn)使用原型模式設計該軟件,所得類圖如圖1所示:圖1 類圖在該設計方案中,DataChart類包含一個DataSet對象,在復制DataChart對象的同時將復制DataSet對象,因此需要使用深克隆技術,可使用流來實現(xiàn)深克隆?!綣ava代碼】import java.io.*;class DataSet imple
19、ments Serializable /具體實現(xiàn)代碼省略 class Color implements Serializable /具體實現(xiàn)代碼省略 class DataChart implements Serializableprivate DataSet ds = new DataSet();private Color color = new Color();private int no;/成員屬性的Getter方法和Setter方法省略public void display() /具體實現(xiàn)代碼省略 /使用流實現(xiàn)深克隆,復制容器的同時復制成員public (1) deepClone() t
20、hrows IOException, ClassNotFoundException, OptionalDataException/將對象寫入流中ByteArrayOutputStream bao=new ByteArrayOutputStream();ObjectOutputStream oos=new (2) ;oos.writeObject( (3) );/將對象從流中取出ByteArrayInputStream bis=new ByteArrayInputStream(bao.toByteArray();ObjectInputStream ois=new (4) ;return( (5)
21、 );class Testpublic static void main(String args)DataChart chart1,chart2 = null;chart1 = new DataChart();trychart2 = (DataChart)chart1.deepClone();catch(Exception e) e.printStackTrace(); System.out.println(chart1=chart2);System.out.println(chart1.getDs()=chart2.getDs();System.out.println(chart1.getN
22、o()=chart2.getNo();編譯并運行上述代碼,輸出結果為: (6) 、 (7) 、 (8) 。在本實例中,DataChart類和DataSet類需要實現(xiàn)Serializable接口的原因是 (9) 。6. 為了避免監(jiān)控數(shù)據(jù)顯示不一致并節(jié)省系統(tǒng)資源,在某監(jiān)控系統(tǒng)的設計方案中提供了一個主控中心類,該主控中心類使用單例模式進行設計,類圖如圖1所示:圖1 類圖在圖1中,主控中心類MainControllerCenter是單例類,它包含一系列成員對象并可以初始化、顯示和銷毀成員對象,對應的方法分別為init()、load()和destroy(),此外還提供了靜態(tài)工廠方法getInstance
23、()用于創(chuàng)建MainControllerCenter類型的單例對象?!綣ava代碼】class MainControllerCenterprivate Menu menu; /主控中心菜單private ToolBar tb; /主控中心工具欄private MainForm mf; /主控中心主窗口private (1) MainControllerCenter mcc; (2) MainControllerCenterpublic void init()menu = new Menu();tb = new ToolBar();mf = new MainForm();public void
24、load()menu.display();tb.display();mf.display();public void destroy()menu.destroy();tb.destroy();mf.destroy();public static MainControllerCenter getInstance()if(mcc=null) (3) ;return mcc;class Testpublic static void main(String args)MainControllerCenter mcc1,mcc2;mcc1 = MainControllerCenter.getInstance();mcc2 = MainControllerCenter.getInstance();System.out.println(mcc1=mcc2);/其他代碼省略 編譯并運行上述代碼,輸出結果為 (4) 。 在本實例中,使用了 (5) (填寫懶漢式或餓漢式)單例模式,其主要優(yōu)點是 (6) ,主要
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026云南中國郵政儲蓄銀行股份有限公司普洱市分行招聘10人參考考試題庫附答案解析
- 桂林銀行考試試題及答案
- 2026廣東清遠市陽山縣城市管理和綜合執(zhí)法局第一次招聘城市管理監(jiān)察協(xié)管員和政府購買服務人員3人參考考試題庫附答案解析
- 2026上海黃浦區(qū)中意工程創(chuàng)新學院教務崗位招聘1人參考考試題庫附答案解析
- 2026四川成都城建投資管理集團有限責任公司所屬數(shù)智集團招聘3人備考考試試題附答案解析
- 2026上半年黑龍江省體育局事業(yè)單位招聘13人備考考試試題附答案解析
- 2026河南安陽市國控集團有限公司招聘12人參考考試題庫附答案解析
- 2026年度威?;鹁娓呒夹g產(chǎn)業(yè)開發(fā)區(qū)鎮(zhèn)(街道)所屬事業(yè)單位公開招聘初級綜合類崗位人員(9人)備考考試試題附答案解析
- 2026浙江杭州市西湖區(qū)翠苑第五幼兒園和新城幼兒園誠聘幼兒教師(非事業(yè))參考考試題庫附答案解析
- 2026四川綿陽市三臺縣公安局招聘警務輔助人員60人備考考試題庫附答案解析
- 《中華人民共和國危險化學品安全法》全套解讀
- 推拿按摩腰背部課件
- 散養(yǎng)土雞養(yǎng)雞課件
- 戰(zhàn)略屋策略體系roadmapPP T模板(101 頁)
- 2025年醫(yī)療輔助崗面試題及答案
- T-CI 1078-2025 堿性電解水復合隔膜測試方法
- 新入職小學教師如何快速成長個人專業(yè)發(fā)展計劃
- 門診導診工作流程
- 2025云南保山電力股份有限公司招聘(100人)筆試歷年參考題庫附帶答案詳解
- 寫字樓物業(yè)安全管理實務操作手冊
- 2025年及未來5年中國飲料工業(yè)行業(yè)競爭格局分析及發(fā)展趨勢預測報告
評論
0/150
提交評論