設計模式作業@USC

 個人所寫解答文檔作業1、3:https://download.csdn.net/download/lfy905805357/11250107


                                                                              作業一:創建型模式


1、簡單工廠模式

使用簡單工廠模式模擬女媧(Nvwa)造人(Person),如果傳入參數M,則返回一個Man對象,如果傳入參數W。則返回一個對象Woman,用java語言實現該場景。現在需要增加一個新的Robot類,如果傳入參數R,則返回一個Robot對象,對代碼進行修改並注意女媧的變化。

(1)繪製簡單工廠模式結構視圖;

(2)請繪製該實例類圖,並代碼實現。

2、工廠模式

現需要設計一個程序來讀取多種不同類型的圖片格式,針對每一種圖片格式都設計一個圖片讀取器ImgReader,如gif圖片讀取器GifReader用於讀取gif格式的圖片,jpg圖片讀取器JPGReader用於讀取jpg格式的圖片。圖片讀取器對象通過圖片讀取器工廠ImgReaderFactory來創建。ImgReaderFactory是一個抽象類,用於定義創建圖片讀取器的工廠方法,其GifReaderFactory和JPGReaderFactory用於創建具體的圖片讀取器對象。使用工廠方法模式,實現該程序的設計。

  1. 繪製工廠模式結構視圖
  2. 給出實例類圖並實現代碼。

3、抽象工廠模式

某軟件公司要推出一款新的手機遊戲軟件,該軟件支持IOS、Android和Windows Phone等多個智能手機操作系統平臺,針對不同的手機操作系統,該遊戲軟件提供了不同的遊戲操作控制類(OperatioinController)和遊戲界面控制類(InterfaceController),並提供的相應的工廠類來封裝這些類的初始化過程。該軟件要求具有較好的擴展性,以支持新的操作系統平臺,爲了滿足上述要求,試採用抽象工廠模式對其進行設計。

  1. 繪製抽象工廠模式結構視圖
  2. 給出實例類圖並實現代碼。

4、建造者模式

某軟件公司要開發一個視頻播放軟件,爲了給用戶提供方便,該播放軟件提供了多種界面顯示模式,如完整模式、精簡模式、記憶模式、網絡模式等。在不同的顯示模式下,主界面的組成元素有所差異,如在完整模式下將顯示菜單、播放列表、主窗口、控制條等,在精簡模式下只顯示主窗口和控制條,而在記憶模式下,將顯示主窗口、控制條、收藏列表等。試用建造者模式設計軟件。

  1. 給出建造者模式等結構視圖
  2. 給出該實例等類圖及代碼實現

5、原型模式

某數據處理軟件需要增加一個圖表複製功能。在圖表對象(DataChart)中包含一個數據集對象(DataSet)。數據集對象用於封裝要顯示的數據,用戶可以通過界面上的複製按鈕將該圖表複製一份,複製後,即可得到新的圖表對象,然後可以修改新圖表的編號、顏色、數據。試用原型模式設計軟件實現深克隆。

  1. 給出原型模式等結構視圖
  2. 給出該實例等類圖及代碼實現

                                                                           作業二:結構型模式


1、適配器模式

某OA系統需要提供一個加密模塊,將用戶機密信息(如口令、郵箱等)加密之後,存儲在數據庫中,系統已經定義好了數據庫操作類,爲了提高開發效率,現需要重用已有的加密算法,這些加密算法封裝在由第三方提供的類中,有些甚至沒有源代碼,試使用適配器模式,設計該模塊,在不修改現有類的基礎上,重用第三方加密算法。

現有一個接口DataOperation定義了排序算法sort(int []),和查找方法search(int[],int),已知類QuikSort的quickSort方法實現了快速排序算法,類BinarySearch類的binarySearch(int[], int)實現了二分查找法,現使用適配器模式設計一個系統,在不修改源代碼的情況下將類,將QuickSort和類BinarySearch類的方法實適配到DataOperation接口。

(1)繪製適配器模式結構視圖;

(2)請繪製該實例類圖,並代碼實現。

2、橋接模式

如果需要開發一個跨平臺視頻播放器,可以在不同操作平臺(Windows、Linux、UNIX等)播放多種格式的視頻文件,如PMEG、RMVB、AVI、WMV等常見適配格式,現使用橋接模式設計播放器。

  1. 繪製橋接模式結構視圖
  2. 給出實例類圖並實現代碼。

3、組合模式

使用組合模式,設計一個殺毒軟件(AntiVirus)的框架,該軟件既可以對某個文件夾Folder殺毒,也可以對某個指定的文件殺毒,文件種類包括,文本文檔TextFile,圖片文件ImageFile,視頻文件VideoFile,繪製類圖並編程模擬實現。

  1. 繪製組合模式結構視圖
  2. 給出實例類圖並實現代碼。

4、裝飾模式

簡單的手機(SimplePhone)在接收到來電的時候,會發出聲音來提醒主人,而現在我們需要爲該手機添加一項功能,在接收來電的時候,除了有聲音,還能產生震動(JarPhone),還可以得到更加高級的手機(ComplexPhone),來電時,它不僅能夠發生,產生震動,而且有燈光閃爍提示,使用裝飾模式來模擬手機功能的升級過程,要求繪製類圖形編程模擬實現。

  1. 給出裝飾模式等結構視圖
  2. 給出該實例等類圖及代碼實現

5、外觀模式

在計算機主機(MainFrame)中,只需要按下主機的開機按鈕(on()),就可以調用其他硬件設備和軟件的啓動方法,如內存(Memory)的自檢(check()),CPU的運行(run()),硬盤(Harddisk)的讀取(read()),操作系統(OS)的載入(load())等,如果某一過程發生錯誤,則計算機啓動失敗,使用外觀模式模擬該過程繪製類圖並編程實現。

  1. 實現給出外觀模式結構視圖。
  2. 給出該實例類圖及代碼實現。

6、代理模式

在某應用軟件中,需要記錄業務方法的調用日期,在不修改現有業務類的基礎上,爲每一個類提供一個日記記錄代理類,在代理類中輸出日誌,如在業務方法Mehtod()的調用之前,輸出“Method方法被調用,調用時間2016.11.18 11:11:11”,調用之後沒有拋出異常則輸出“Mehtod方法調用成功”,否則輸出“Mehtod方法調用失敗”,在代理類中調用真實業務類的業務方法,使用代理模式設計日誌記錄模塊的結構,繪製類圖並編程模擬實現。

  1. 實現給出代理模式結構視圖。
  2. 給出該實例類圖及代碼實現。

                                                                                  作業三: 行爲型模式


1、職責連模式

在戰鬥中,一般根據戰爭規模的大小和重要性,由不同級別的長官(officer)來下達作戰指令,情報人員向上級提交軍情(包括敵人人數等信息),作戰命令需要上級批准,如果直接上級不具備下達命令的權力,則傳遞給他的上級,直到有人可以決定爲止。現使用職責鏈模式來模擬該過程,客戶類模擬情報人員,首先向級別最低的班長(Bangzhang),提交任務書(Mission),即軍情,如果超出班長的權限範圍,則傳遞給排長(Paizhang),排長如果不能處理,則傳遞給營長(Yingzhang),如果營長不能處理,則需要開會討論,設置着幾級長官的權限範圍分別是:

1>. 敵人數量小<10人,班長下達作戰指令

2>. 10=<敵人數量<50,排長下達作戰指令

3>. 50=<敵人數量<200,營長下達作戰指令

4>. 200=<敵人數量,需要開會討論

(1)繪製職責鏈模式結構視圖;

(2)請繪製該實例類圖,並代碼實現。

2、命令模式

某軟件公司欲開發一個基於windows平臺的公告板系統,該系統提供一個主菜單(Menu),在主菜單中包含了一些菜單項(MenuItem),可以通過Menu類的addMenuItem()方法添加菜單項,菜單上的主要方法是click(),每一個菜單項包含一個抽象命令類,具體命令類包含OpenCommand(打開命令)、CreateCommand(創建命令)和EditeCommand(編輯命令)等,命令類內置有一個excute()方法,用於調用公告板系統界面類(BoardScrean)的open()、create()、edite()等方法,現使用命令模式設計系統。

  1. 繪製命令模式結構視圖
  2. 給出實例類圖並實現代碼。

3、迭代器模式

某教務管理信息系統中,一個班級(class)包含多個學生(Stedent),使用java內置迭代器實現對學生數據的雙向遍歷,要求按學生年齡由大到小的次序輸出學生信息,現使用迭代器模式設計系統。

  1. 繪製迭代器模式結構視圖
  2. 給出實例類圖並實現代碼。

4、中介者模式

某軟件公司需要開發一套圖形用戶界面類庫,該類庫包含若干個預定義的窗格對象,例如TextPane,ListPane,GraphicPane,窗口之間不允許直接調用,具有該類庫的應用由一個包含一組窗格的窗口(Window)組成,窗口需要協調窗格之間的行爲,採用中介者模式收集系統

  1. 繪製中介者模式結構視圖
  2. 給出實例類圖並實現代碼。

5、備忘錄模式

某軟件公司正在開發一款網遊,爲了給玩家提供更多方便,在遊戲過程中可以設置一個恢復點,用於保存當前的遊戲場景,如果在後續遊戲過程中,玩家角色“不幸犧牲”,玩家可以返回到先前保存的場景,從恢復點開始重新遊戲,試用備忘錄模式實現。

  1. 繪製備忘錄模式結構視圖
  2. 給出實例類圖並實現代碼

6、觀察者模式

某公司欲開發一套機房監控系統,如果機房達到一定指定溫度,傳感器將作出反應,將信號傳遞給響應設備,如警示燈將閃爍,報警器將發出警報,安全逃生門將自動開啓、隔熱門將自動關閉,每一響應設備的行爲右專門的程序來控制,爲支持將來引入新類型的響應設備,用觀察者模式設計該系統

  1. 繪製觀察者模式結構視圖
  2. 給出實例類圖並實現代碼

7、狀態模式

某紙牌遊戲中,人物角色具有入門級(Primary),熟練級(Secondary),高手級(Professional)和骨灰級(Final)四種等級,角色的等級與積分相對應,遊戲勝利將增加積分,失敗則扣除積分,入門級具有最基本的遊戲功能play(),熟練級增加了遊戲勝利積分加倍功能doubleScore(),高手級在熟練級基礎上再增加換牌功能changeCards(),骨灰級在高手級基礎上再增加偷看他人的牌的功能peekCards(),使用狀態模式來設計系統

(1) 繪製狀態模式結構視圖

(2) 給出實例類圖並實現代碼

8、策略模式

設計一個網上書店,該系統中所有的計算機圖書(ComputerBook),每本都有10%的折扣;所有的語言類圖書(LanguageBook),每本有2元的折扣;小說類圖書以每100元有10元的折扣,用策略模式設計該系統

(1)繪製策略模式結構視圖

(2)給出實例類圖並實現代碼

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章