東大-軟件設計模式X-B卷_第1頁
東大-軟件設計模式X-B卷_第2頁
東大-軟件設計模式X-B卷_第3頁
東大-軟件設計模式X-B卷_第4頁
東大-軟件設計模式X-B卷_第5頁
已閱讀5頁,還剩5頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

PAGEPAGE7課程名稱:軟件設計模式X東北大學繼續教育學院軟件設計模式X試卷(作業考核線上2)B卷(共7頁)一、單選題(共40分,每題2分)1.常用的基本設計模式可分為(A)A.創建型、結構型和行為型B.對象型、結構型和行為型C.過程型、結構型和行為型D.抽象型、接口型和實現型2.對以下開閉原則的描述錯誤的是(A)A.開閉原則與“對可變性的封裝原則”沒有相似性B.找到個系統的可變元素,將它封裝起來,叫開閉原則C.對修改關閉,是其原則之一D.從抽象層導出一個或多個新具體類可以改變系統的行為,是其原則之一3.“不要和陌生人說話”是(D)原則的通俗表述。A.接口隔離B.里氏替換C.依賴倒置D.迪米特4.當創建一個具體的對象而又不希望指定具體的類時,可以使用(D)A.結構型B.創建型C.行為型D.以上都可以5.以下(C)是利用一個對象,快速地生成一批對象。A.抽象工廠(AbstractFactory)模式B.原型(Prototype)模式C.合成(Composite)模式D.橋接(Bridge)模式6.以下(B)用來描述建造者(Builder)。A.定義一個用于創建對象的接口,讓子類決定實例化哪一個類B.將一個復雜對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示C.保證一個類僅有一個實例,并提供→個訪問它的全周訪問點D.運用共享技術有效地支持大量細粒度的對象7.以下(C)用來描述工廠方法(FactoryMethod)模式。A.提供一個創建一系列相關或相互依賴對象的接口,而無須指定它們具體的類B.表示一個作用于某對象結構中的各元素的操作。它使用戶可以在不改變各元素的類的前提下定義作用于這些元素的新操作C.定義一個用于創建對象的接口,讓子類決定實例化哪一個類。該模式使一個類的實例化延遲到其子類D.定義一系列的算法,把它們一個個封裝起來,并且使它們可相互替換。本模式使得算法可獨立于使用它的客戶而變化8.對象適配器模式是(A)原則的典型應用。A.將一個類的接口轉換成客戶希望的另外一個接口,本模式使原本由于接口不兼容而不能一起工作的那些類可以一起工作。B.定義一個用于創建對象的接口,讓子類決定實例化哪一個類C.表示一個作用于某對象結構中的各元素的操作,它使用戶可以在不改變各元素的類的前提下定義作用于這些元素的新操作D.將一個請求封裝為一個對象,從而使用戶可用不同的請求對客戶進行參數化;對請求排隊或記錄請求日志,以及支持可撤銷的操作9.關于模式適用性,以下(D)不適合使用Flyweight(享元)模式。A.一個應用程序使用了大量的對象B.完全由于使用大量的對象,造成很大的存儲開銷C.對象的大多數狀態都可變為外部狀態D.用戶想使用一個已經存在的類,而它的接口不符合用戶的需求10.下面不屬于創建型模式的有(B)。A.抽象工廠模式(AbstractFactory)B.適配器模式(Adapter)C.工廠方法模式(FactoryMethod)D.單例模式(Singleton)11.定義一系列的算法,把它們一個個封裝起來,并且使它們可相互替換。這句話是對哪種模式的描述(D)。A.觀察者模式(Observer)B.橋接模式(Bridge)C.適配器模式(Adapter)D.策略模式(Strategy)12.若系統中的某子模塊需要為其他模塊(B)提供訪問不同數據庫系統的功能,這些數據庫系統提供的訪問接口有一定的差異,但訪問過程卻都是相同的,例如,先連接數據庫,在打開數據庫,最后對數據庫進行查詢,設計模式可抽象出相同的數據庫訪問過程。A.外觀B.裝飾C.單間D.模板方法13.Decorator(裝飾)模式的意圖是:(B)。A.定義一系列的算法,把它們一個個的封裝起來,并且使它們可相互替換。B.為一個對象動態連接附加的職責。C.你希望只擁有一個對象,但不用全局對象來控制對象的實例化。D.在對象之間定義一種一對多的依賴關系,這樣當一個對象的狀態改變時,所有依賴于它的對象都將得到通知并自動更新。14.Singleton模式適用于(B)。A.當類有多個實例而且客戶可以從一個眾所周知訪問點訪問它時。B.當這個唯一實例應該是通過子類化可擴展的,并且客戶應該無需更改代碼就能使用一個擴展的實例時。C.當構造過程必須允許被構造的對象有不同的表示時。D.生成一批對象時。15.下列模式中,屬于行為模式的是(C)。A.工廠模式B.適配器C.觀察者D.以上都是16.關于工廠方法,以下敘述不正確的是(C)。A.FactoryMethod是一個用于幫助分配創建的責任的模式。B.FactoryMethod模式和AbstractFactory模式總是配合使用。C.FactoryMethod適用于將對象實例化的規則推遲到某個派生類的情形。D.FactoryMethod是屬于創建型模式。17.以下意圖(B)可用來描述解釋器(Interpreter)。A.將抽象部分與它的實現部分分離,使它們都可以獨立變化B.給定一個語言,定義它的文法的一種表示,并定義一個解釋器,這個解釋器使用該表示來解釋語言中的句子C.將一個復雜對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示D.為其他對象提供一種代理以控制對這個對象的訪問18.在觀察者模式中,表述錯誤的是(C)。A.人觀察者角色的更新是被動的B.被觀察者可以通知觀察者進行更新C.觀察者可以改變被觀察者的狀態,再由被觀察者通知所有觀祟者依據被觀察者的狀態掛行D.以上表述全部錯誤19.以下意圖(C)是用來描述組合(Composite)。A.為其他對象提供一種代理以控制對這個對象的訪問B.運用共享技術有效地支持大量細粒度的對象C.將對象組合成樹形結構以表示“部分”整體”的層次結構D.將一個復雜對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示20.設計模式具有的優點(A)。A.適應需求變化B.程序易于理解C.減少開發過程中的代碼開發工作量D.簡化軟件系統的設計二、多選題(共10分,每題2分)1.以下是模式的基本要素的是(ABCD)。A.名稱B.意圖C.解決方案D.參與者和協作者2.當應用工廠方法(FactoryMethod)模式時要考慮(ABCD)。A.主要有兩種不同的情況B.參數化工廠方法C.特定語言的變化和問題D.使用模板以避免創建子類3.以下屬于結構型模式的是(AB)。A.代理(Proxy)模式B.合成(Composite)模式C.命令(Command)模式D.觀察者(Observer)模式4.裝飾(Decorator)模式的兩個主要缺點是(CD)。A.比靜態繼承更靈活B.避免在層次結構高層的類有太多的特征C.有許多小對象,很容易對它們進行定制,但是很難學習這些系統,排錯也很困難D.裝飾與它的組成不一樣,裝飾是一個透明的包裝5.中介者模式有以下(ABD)優點。A.簡化了對象之間的交互B.簡化了同事類的設計和實現C.封裝了轉換規則D.減少了子類生成三、判斷題(共10分,每題1分;請在認為正確的題目后面寫T,錯誤的題目后面寫F)1.設計模式的兩大主題是系統復用與系統擴展。(T)2.抽象工廠模式提供了一系列相關或相互依賴對象的接口且必須指定他們具體的類。(F)3.對象適配器模式是依賴倒轉原則的典型應用。(F)4.Open-Close原則的含義是一個軟件實體應當對擴展開放,對修改關閉。(T)5.Singleton(單例)模式屬于結構性模式。(F)6.常用的設計模式可分為過程型、創建型和結構型。(F)7.對觀察者模式,觸發事件的對象——Subject對象不需要知道觀察事件的所有對象。(T)8.通過在問題領域中使用模式,可以用一種不同的方式來看待問題。(T)9.Strategy模式可以用不同的方式調用所有的算法。(F)10.當依賴關系固定(或幾乎固定)時,加入一個Observer(觀察者)模式可能只會增加復雜性。(T)四、名詞解釋(共15分,每題3分)1.設計模式答:是一套被反復使用、多數人知曉的、經過分類編目的、代碼設計經驗的總結。使用設計模式是為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。2.開閉原則答:一個軟件實體應當對擴展開放,對修改關閉,即在不修改源代碼的基礎上擴展一個系統的行為。3.單一職責原則答:一個對象應該只包含單一的職責,并且該職責被完整地封裝在一個類中。4.依賴關系答:依賴關系是一種使用關系,它是對象之間相合度最弱的一種關聯方式,是臨時性的關聯。5.組合關系答:組合關系也是關聯關系的一種,也表示類之間的整體與部分的關系,但它是一種更強烈的聚合關系,是contains-a關系。在組合關系中,整體對象可以控制部分對象的生命周期,一旦整體對象不存在,部分對象也將不存在,部分對象不能脫離整體對象而存在。五、簡答題(共15分,每題5分)1.設計模式一般有哪幾個基本要素?設計模式一般有如下幾個基本要素:模式名稱、問題、目的、解決方案、效果、實例代碼和相關設計模式,其中的關鍵元素包括模式名稱、問題、解決方案和效果。2.創建型模式分包括哪幾種設計模式,各是什么并簡要說明。⑴單例(Singleton)模式:某個類只能生成一個實例,該類提供了一個全局訪問點供外部獲取該實例,其拓展是有限多例模式。⑵原型(Prototype)模式:將一個對象作為原型,通過對其進行復制而克隆出多個和原型類似的新實例。⑶工廠方法(FactoryMethod)模式:定義一個用于創建產品的接口,由子類決定生產什么產品。⑷抽象工廠(AbstractFactory)模式:提供一個創建產品族的接口,其每個子類可以生產一系列相關的產品。⑸建造者(Builder)模式:將一個復雜對象分解成多個相對簡單的部分,然后根據不同需要分別創建它們,最后構建成該復雜對象。說明訪問者模式的定義與主要優缺點。定義:封裝一些作用于某種數據結構中的各元素的操作,它可以在不改變這個數據結構的前提下定義作用于這些元素的新的操作。優點:1.擴展性好。在不修改對象結構中的元素的情況下,為對象結構中的元素添加新的功能。2.復用性好。通過訪問者來定義整個對象結構通用的功能,從而提高復用程度。3.分離無關行為。通過訪問者來分離無關的行為,把相關的行為封裝在一起,構成一個訪問者,這樣每一個訪問者的功能都比較單一。缺點:1.對象結構變化很困難。在訪問者模式中,每增加一個新的元素類,都要在每一個具體訪問者類中增加相應的具體操作,這違背了“開閉原則”。2.違反了依賴倒置原則。訪問者模式依賴了具體類,而沒有依賴抽象類。六、綜合題(共10分)當“人民幣匯率”升值時,進口公司的進口產品成本降低且利潤率提升,出口公司的出口產品收入降低且利潤率降低;當“人民幣匯率”貶值時,進口公司的進口產品成本提升且利潤率降低,出口公司的出口產品收入提升且利潤率提升。利用觀察者模式設計一個程序,分析“人民幣匯率”的升值或貶值對進口公司的進口產品成本或出口公司的出口產品收入以及公司的利潤率的影響。提示:這里的匯率(Rate)類是抽象目標類,它包含了保存觀察者(Company)的List和增加/刪除觀察者的方法,以及有關匯率改變的抽象方法change(intnumber);而人民幣匯率(RMBrate)類是具體目標,它實現了父類的change(intnumber)方法,即當人民幣匯率發生改變時通過相關公司;公司(Company)類是抽象觀察者,它定義了一個有關匯率反應的抽象方法respons巳(intnumber);進口公司(ImportCompany)類和出口公司(ExportCompany)類是具體觀察者類,它們實現了父類的response(intnumber)方法,即當它們接收到匯率發生改變的通知時作為相應的反應。請畫出該程序的類圖。訂閱者及具體訂閱者packageobserver;/***抽象觀察者:公司*@authorchenzufeng*@date2021-2-8*/publicinterfaceCompany{/***對匯率的反應*@paramnumber匯率*/voidresponse(intnumber);}出口公司:packageobserver;publicclassExportCompanyimplementsCompany{@Overridepublicvoidresponse(intnumber){if(number>0){System.out.println("人民幣匯率升值"+number+"個基點,降低了出口產品收入,降低了出口公司的銷售利潤率。");}elseif(number<0){System.out.println("人民幣匯率貶值"+(-number)+"個基點,提升了出口產品收入,提升了出口公司的銷售利潤率。");}}}進口公司:packageobserver;publicclassImportCompanyimplementsCompany{@Overridepublicvoidresponse(intnumber){if(number>0){System.out.println("人民幣匯率升值"+number+"個基點,降低了進口產品成本,提升了進口公司利潤率。");}elseif(number<0){System.out.println("人民幣匯率貶值"+(-number)+"個基點,提升了進口產品成本,降低了進口公司利潤率。");}}}發布者packageobserver;importjava.util.ArrayList;importjava.util.List;/***抽象目標:匯率*/abstractclassRate{protectedList<Company>companyList=newArrayList<>();/***增加觀察者*@paramcompany公司*/publicvoidaddCompany(Companycompany){companyList.add(company);}/***刪除觀察者*@paramcompany公司*/

溫馨提示

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

評論

0/150

提交評論