設(shè)計(jì)模式總復(fù)習(xí)題_第1頁
設(shè)計(jì)模式總復(fù)習(xí)題_第2頁
設(shè)計(jì)模式總復(fù)習(xí)題_第3頁
設(shè)計(jì)模式總復(fù)習(xí)題_第4頁
設(shè)計(jì)模式總復(fù)習(xí)題_第5頁
已閱讀5頁,還剩17頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、總復(fù)習(xí)題復(fù)習(xí)參考資料:1. GoF設(shè)計(jì)模式2. 設(shè)計(jì)模式解析3. 易學(xué)設(shè)計(jì)模式4. 大話設(shè)計(jì)模式5. 深入淺出設(shè)計(jì)模式以參考資料為主,模擬試題1-5中有些題答案在一些附加資料中模擬試題1一、選擇題(分值20)1. 設(shè)計(jì)模式一般用來解決什么樣的問題()A.同一問題的不同表相B不同問題的同一表相C.不同問題的不同表相D.以上都不是2. 下列屬于面向?qū)ο蠡驹瓌t的是()A.繼承B.封裝C.里氏代換D都不是3. Open-Close原則的含義是一個(gè)軟件實(shí)體()A. 應(yīng)當(dāng)對擴(kuò)展開放,對修改關(guān)閉.B. 應(yīng)當(dāng)對修改開放,對擴(kuò)展關(guān)閉C.應(yīng)當(dāng)對繼承開放,對修改關(guān)閉D.以上都不對4. 當(dāng)我們想創(chuàng)建一個(gè)具體的對象而

2、又不希望指定具體的類時(shí),可以使用()模式。A.創(chuàng)建型B.結(jié)構(gòu)型C行為型D.以上都可以5. 要依賴于抽象,不要依賴于具體。即針對接口編程,不要針對實(shí)現(xiàn)編程,是()的表述6. 開-閉原則8. 接口隔離原則9. 里氏代換原則10. 依賴倒轉(zhuǎn)原則6. 依據(jù)設(shè)計(jì)模式思想,程序開發(fā)中應(yīng)優(yōu)先使用的是()關(guān)系實(shí)現(xiàn)復(fù)用。A,委派B.繼承C創(chuàng)建D.以上都不對7. 設(shè)計(jì)模式的兩大主題是()A.系統(tǒng)的維護(hù)與開發(fā)B對象組合與類的繼承C.系統(tǒng)架構(gòu)與系統(tǒng)開發(fā)D.系統(tǒng)復(fù)用與系統(tǒng)擴(kuò)展8. 單體模式中,兩個(gè)基本要點(diǎn)()和單體類自己提供單例A.構(gòu)造函數(shù)私有B.唯一實(shí)例C.靜態(tài)工廠方法D.以上都不對9. 下列模式中,屬于行為模式的是

3、()A.工廠模式B觀察者C適配器以上都是10. “不要和陌生人說話”是()原則的通俗表述A.接口隔離B.里氏代換C.依賴侄J轉(zhuǎn)D.迪米特二、填空題(分值20)1. 軟件體系結(jié)構(gòu)是指一個(gè)系統(tǒng)的有目的的設(shè)計(jì)和規(guī)劃,這個(gè)設(shè)計(jì)規(guī)劃既不描述,也不描述,它只描述系統(tǒng)的及其相互的。2. 一個(gè)1ML莫型只描述了一個(gè)系統(tǒng)_,它并沒告訴我們系統(tǒng)3?接口是可以在整個(gè)模型中反復(fù)使用的一組行為,是一個(gè)沒有_而只有_的類。4?多重性指的是,某個(gè)類有_個(gè)對象可以和另一個(gè)類的對象關(guān)聯(lián)。5?當(dāng)一個(gè)類的對象可以充當(dāng)多種角色時(shí),關(guān)聯(lián)就可能發(fā)生。6?在泛化關(guān)系中,_可以替代_。也就是說,后者出現(xiàn)的地方,前者都可以出現(xiàn)。但是反過來卻不

4、成立。7?最通常的依賴關(guān)系是一個(gè)類操作的中用到了的定義。&組成是的聚集,因?yàn)榫奂械拿總€(gè)部分體只能屬于整體。9?實(shí)現(xiàn)的符號和繼承的符號有相似之處,兩者的唯一差別是實(shí)現(xiàn)關(guān)系用表示,繼承關(guān)系用表示。10. 設(shè)計(jì)模式中應(yīng)優(yōu)先使用而不是_。3、 判斷題(分值15)1. 適配器模式屬于創(chuàng)建型模式()2. 在設(shè)計(jì)模式中,“效果”只是指“原因和結(jié)果”()3. 設(shè)計(jì)模式使代碼編制不能真正工程化()4. 面向?qū)ο笳Z言編程中的異常處理,可以理解為責(zé)任鏈模式()5. 反模式就是反對在軟件開發(fā)過程中使用設(shè)計(jì)模式()4、 問答題(分值30)1. 什么是設(shè)計(jì)模式?設(shè)計(jì)模式目標(biāo)是什么?2. 設(shè)計(jì)模式中一般都遵循的原

5、則有什么?3. “GangofFour”針對“創(chuàng)建優(yōu)秀面向?qū)ο笤O(shè)計(jì)”建議了哪些策略?4. 面向?qū)ο笙到y(tǒng)中功能復(fù)用的兩種最常用技術(shù)是什么?5. 只根據(jù)抽象類中定義的接口來操縱對象有什么好處?5、 應(yīng)用題(分值15)公司架構(gòu):經(jīng)理、工程師、技師和后勤人員都是公司的雇員,經(jīng)理管理工程師、技師和后勤人員。高層經(jīng)理領(lǐng)導(dǎo)較低級別的經(jīng)理。典型層次圖如下:可以使用哪種設(shè)計(jì)模式實(shí)現(xiàn)公司的層級關(guān)系?弁說明為什么模擬試題2一、選擇題(分值20)1. 在觀察者模式中,表述錯(cuò)誤的是()A. 觀察者角色的更新是被動(dòng)的。B. 被觀察者可以通知觀察者進(jìn)行更新C. 觀察者可以改變被觀察者的狀態(tài),再由被觀察者通知所有觀察者依據(jù)被

6、觀察者的狀態(tài)進(jìn)行。D. 以上表述全部錯(cuò)誤。2. 對于違反里式代換原則的兩個(gè)類,可以采用的候選解決方案錯(cuò)誤的是:()A.創(chuàng)建一個(gè)新的抽象類C,作為兩個(gè)具體類的超類,將A和B共同的行為移動(dòng)到C中,從而解決A和B行為不完全一致的問題。B.將B到A的繼承關(guān)系改組成委派關(guān)系。C.區(qū)分是“IS-a”還是"Hasa"。如果是“l(fā)s-a”,可以使用繼承關(guān)系,如果是"Has一_力a”應(yīng)該改成委派關(guān)系D.以上方案錯(cuò)誤3. 下列模式屬于結(jié)構(gòu)型設(shè)計(jì)模式的是()A. CompositeB. 享元(Flyweight)模式C. 單體模式D. 工廠方法4. 關(guān)于繼承表述錯(cuò)誤的是:()A. 繼承

7、是一種通過擴(kuò)展一個(gè)已有對象的實(shí)現(xiàn),從而獲得新功能的復(fù)用方法。B. 泛化類(超類)可以顯式地捕獲那些公共的屬性和方法。特殊類(子類)則通過附加屬性和方法來進(jìn)行實(shí)現(xiàn)的擴(kuò)展。C. 破壞了封裝性,因?yàn)檫@會將父類的實(shí)現(xiàn)細(xì)節(jié)暴露給子類。D. 繼承本質(zhì)上是“白盒復(fù)用”,對父類的修改,不會影響到子類。5. 對于依賴倒轉(zhuǎn)的表述錯(cuò)誤的是()A. 依賴于抽象而不依賴于具體,也就是針對接口編程。B. 依賴倒轉(zhuǎn)的接口并非語法意義上的接口,而是一個(gè)類對其他對象進(jìn)行調(diào)用時(shí),所知道的方法集合。C. 從選項(xiàng)B的角度論述,一個(gè)對象可以有多個(gè)接口。D. 實(shí)現(xiàn)了同一接口的對象,可以在運(yùn)行期間,順利地進(jìn)行替換。而且不必知道所用的對象是

8、那個(gè)實(shí)現(xiàn)類的實(shí)例。E. 此題沒有正確答案。6. 可以使用哪一種設(shè)計(jì)模式限制類的實(shí)例唯一?()A. 工廠方法B. 生成器模式C. 原型模式D. 單體模式7. Java數(shù)據(jù)庫連接庫JDBC用到哪種設(shè)計(jì)模式()?A.生成器B.工廠方法C.抽象工廠D.單體8. 關(guān)于運(yùn)用GOFX廠方法的效果Consequences,說法不正確的是()A. 將客戶代碼與應(yīng)用相關(guān)的類解耦B. 它使得所涉及的產(chǎn)品系列可替換C. 它有利于產(chǎn)品的一致性D. 它較易于支持新種類的產(chǎn)品8. 在應(yīng)用程序中可用哪些設(shè)計(jì)模式分離出算法?()A. 工廠方法B. 策略模式C. 訪問者模式D. 裝飾器模式9. 工廠方法也稱為()A. 抽象工廠B

9、. 抽象構(gòu)造器C. 虛工廠D. 虛構(gòu)造器10. 可以使用哪種設(shè)計(jì)模式將抽象和實(shí)現(xiàn)解耦,使得抽象和實(shí)現(xiàn)可以獨(dú)自變化?()A. 適配器模式B. 橋接模式C. 外觀模式D. 組合橋接模式填空題(分值20)1. 面向?qū)ο蟮钠邨l基本原則包括:開閉原則,里式代換原則,合成聚合原則以及(),(),(),()。2. 在存在繼承關(guān)系的情況下,方法向()方向集中,而數(shù)據(jù)向()方向集中。3. 適配器模式,分為類的適配器和對象的適配器兩種實(shí)現(xiàn)。其中類的適配器采用的是()關(guān)系,而對象適配器采用的是(4. 設(shè)計(jì)模式的四個(gè)基本要素是(),(5. . 創(chuàng)建型模式的根本意圖是要把(低系統(tǒng)的()。6. 工廠模式分為() ,()

10、,()7. 門面模式是() 法則的典型運(yùn)用8. MVC 莫型的基本工作原理是基于()9.)關(guān)系。),()和()。)和()的責(zé)任進(jìn)行分離,從而降三種類型。模式,實(shí)現(xiàn)是基于()模式() 基本原則的宏觀運(yùn)用, 本質(zhì)上是沒有任何模式的, 發(fā)現(xiàn)模式的人永遠(yuǎn)是大師,而死守模式的人,最對只能是一個(gè)工匠三、判斷題(分值15)1. 虛擬代理可以使用一個(gè)小對象代替大對象,從而減少系統(tǒng)的資源的消耗,提高系統(tǒng)運(yùn)行速度。()2. 命令模式可以消除請求發(fā)送者與請求接收者彼此之間的耦合,使得對象之間的關(guān)系更加靈活。()3. 解釋器模式是對象行為型模式,通常較少使用。()4. 迭代器模式是開閉原則最好體現(xiàn),因?yàn)榈髂J綄⒕?/p>

11、合對象和迭代器分離開來。()5. 中介者模式設(shè)計(jì)符合單一職責(zé)原則得分評卷人四、問答題(分值30)1 .在MVC莫型中MV、C分別指什么?簡述它們之間的關(guān)系?2 .什么是開閉原則?3 .設(shè)計(jì)數(shù)據(jù)庫的系統(tǒng)日志,要考慮使用哪些設(shè)計(jì)模式?4 .使用工廠模式的主要原因是什么?5 .在面向?qū)ο笤O(shè)計(jì)中,編譯原理的有限狀態(tài)機(jī)可以什么樣解決方案完成五、應(yīng)用題(分值20)考慮如下場景的設(shè)計(jì):貓大叫一聲,所有的老鼠都開始逃跑,主人被驚醒。問:(1)設(shè)計(jì)可能用到什么設(shè)計(jì)模式?(2)畫出具類圖。模擬試題3多項(xiàng)選擇題(分值30)1)以下是模式的基本要素的是()A)名稱B)意圖C)解決方案D)參與者和協(xié)作者2)常用的描述設(shè)

12、計(jì)模式的格式有()A意圖B)動(dòng)機(jī)C)適用性D)結(jié)構(gòu)3) 以下哪些問題通過應(yīng)用設(shè)計(jì)模式能夠解決()A) 指定對象的接口B)排除軟件BUGC) 確定軟件的功能都正確實(shí)現(xiàn)D) 設(shè)計(jì)應(yīng)支持變化4) 面向?qū)ο笙到y(tǒng)中功能復(fù)用的最常用技術(shù)是()。A) 類繼承B)對象組合C) 使用抽象類D) 使用實(shí)現(xiàn)類5) 常用的基本設(shè)計(jì)模式可分為()。A)創(chuàng)建型、結(jié)構(gòu)型和行為型B)對象型、結(jié)構(gòu)型和行為型C)過程型、結(jié)構(gòu)型和行為型D)抽象型、接口型和實(shí)現(xiàn)型6) 以下關(guān)于創(chuàng)建型模式說法正確的是()。A) 創(chuàng)建型模式關(guān)注的是對象的創(chuàng)建B)創(chuàng)建型模式關(guān)注的是功能的實(shí)現(xiàn)C) 創(chuàng)建型模式關(guān)注的是組織類和對象的常用方法D) 創(chuàng)建型模式關(guān)

13、注的是對象間的協(xié)作7) )以下屬于創(chuàng)建型模式的是()。A)抽象工廠(AbstractFactory)模式B)合成(Composite)模式C)單例(Singleton)模式D)橋接(Bridge)模式(8)()模式是利用一個(gè)對象,快速生成一批對象。A)抽象工廠(AbstractFactory)模式B)合成(Composite)模式C)原型(Prototype)模式D)橋接(Bridge)模式9)在不破壞類封裝性的基礎(chǔ)上,使得類可以同不曾估計(jì)到的系統(tǒng)進(jìn)行交互。主要體現(xiàn)在A)適配器(Adapter)模式B)合成(Composite)模式C)原型(Prototype)模式D)橋接(Bridge)模式

14、10)結(jié)構(gòu)型模式中最體現(xiàn)擴(kuò)展性的幾種模式是()A)適配器(Adapter)模式B)合成(Composite)模式C)裝飾(Decorator)模式D)橋接(Bridge)模式11)行為類模式使用()在類間分派行為。A)接口B)繼承機(jī)制C)對象組合D)委托12)以下屬于行為對象模式的是()A)模板(TemplateMethod)模式B)迭代器(Iterator)模式C)命令(Command)模式D)觀察者(Observer)模式13)封裝分布于多個(gè)類之間的行為的模式是()A)觀察者(Observer)模式B)迭代器(Iterator)模式C)訪問者(Visitor)模式D)策略(Strategy

15、)模式14)Observer(觀察者)模式適用于()A)當(dāng)一個(gè)抽象模型存在兩個(gè)方面,其中一個(gè)方面依賴于另一方面,將這二者封裝在獨(dú)立的對象中以使它們可以各自獨(dú)立地改變和復(fù)用。B)當(dāng)對一個(gè)對象的改變需要同時(shí)改變其它對象,而不知道具體有多少對象有待改變時(shí)。C)當(dāng)一個(gè)對象必須通知其它對象,而它又不能假定其它對象是誰。也就是說你不希望這些對象是緊耦合的。D)個(gè)對象結(jié)構(gòu)包含很多類對象,它們有不同的接口,而想對這些對象實(shí)施一些依賴于其具體類的操作。15)Java的異常處理機(jī)制可理解為哪一種行為模式()。A) 觀察者(Observer)模式B) 迭代器(Iterator)模式C) 職責(zé)鏈(ChainofRes

16、ponsibility)模式D)策略(Strategy)模式2、 填空題(分值20)把下列面向?qū)ο蟮男g(shù)語填入對應(yīng)的括號中:里氏替換(LSP)、接口隔離(ISP)、依賴倒置(DIP)、單一職責(zé)(SRP、開閉(OCP、優(yōu)先使用組合(CARP、接口1. ()原則的核心思想是系統(tǒng)中的每一個(gè)對象都應(yīng)該只有一個(gè)單獨(dú)的職責(zé),而所有對象所關(guān)注的就是自身職責(zé)的完成。2. ()原則的核心思想是一個(gè)對象對擴(kuò)展開放,對修改關(guān)閉;實(shí)現(xiàn)此原則的關(guān)鍵就在于()、分離出()部分和()部分。3. ()原則的核心思想是在任何父類出現(xiàn)的地方都可以用它的子類來替代。4. ()原則的核心思想是要依賴于抽象,而不要依賴于具體的實(shí)現(xiàn)。5.

17、 ()原則的核心思想是不應(yīng)該強(qiáng)迫客戶程序依賴于他們不用的方法。即一個(gè)接口不需要提供太多的行為,應(yīng)該只提供一種對外的功能,不應(yīng)該把所有的操作都封裝在一個(gè)接口中。6. ()原則的核心思想是一個(gè)對象應(yīng)當(dāng)對其它對象盡可能少的了解?;蛘哒f,只和你的朋友說話。這樣一些對象可以看做朋友:當(dāng)前對象本身、通過方法的參數(shù)傳遞進(jìn)來的對象、當(dāng)前對象所創(chuàng)建的對象、當(dāng)前對象的實(shí)例變量所引用的對象和方法內(nèi)所創(chuàng)建或者實(shí)例化的對象。7. ()原則的核心思想是優(yōu)先使用組合而非繼承。8. 設(shè)計(jì)模式應(yīng)該面向()編程3、 判斷題(分值10)1. 單一職責(zé)原則表現(xiàn)在面向?qū)ο蟮某绦蛑芯褪恰案邇?nèi)聚、低耦合”。()2. 設(shè)計(jì)模式只能遵從使用,

18、不能也無需創(chuàng)新。()3. 在面向?qū)ο缶幊虝r(shí),無論何時(shí)何地都要使用GoF所給出的設(shè)計(jì)模式,這樣編寫的代碼才比較好。()4. 工廠方法能夠提高內(nèi)聚性,松散耦合,并且有助于測試。()5. 對象要么構(gòu)造其它對象,要么使用其它對象,絕不要兩者兼顧。()4、 問答題(分值30)1. 單例模式的兩種實(shí)現(xiàn)方法,并說明優(yōu)缺點(diǎn)?2. 什么是對象粒度?3. MVC莫式是個(gè)復(fù)合模式,請寫出你兩種你所知道的MVC中使用的模式。4. 舉例說明,適配器模式和裝配器在JavaIO中的應(yīng)用。5. 在面向?qū)ο蟪绦蛟O(shè)計(jì)中,常常需要避免過多case語句或者if語句,請給出一種設(shè)計(jì)模式避免過多的條件分支語句,同時(shí)指出這種設(shè)計(jì)模式如何幫

19、助避免過多的Case語句?5、 應(yīng)用題(分值10)某房地產(chǎn)公司欲開發(fā)一套房產(chǎn)信息管理系統(tǒng),根據(jù)如下描述選擇合適的設(shè)計(jì)模式進(jìn)行設(shè)計(jì):(1)該公司有多種房型,如公寓、別墅等,在將來可能會增加新的房型;(2)銷售人員每售出一套房子,主管將收到相應(yīng)的銷售消息。如果對上述場景編程,那么上述(1)和(2)可能分別用到哪些設(shè)計(jì)模式?模擬試題4選擇題(分值20)1 .設(shè)計(jì)模式具有的優(yōu)點(diǎn)()OA.適應(yīng)需求變化B.程序易于理解C.減少開發(fā)過程中的代碼開發(fā)工作量D.簡化軟件系統(tǒng)的設(shè)計(jì)2 .下圖描述了一種設(shè)計(jì)模式,該設(shè)計(jì)模式不可以()A.動(dòng)態(tài)決定由一組對象中某個(gè)對象處理該請求B.動(dòng)態(tài)指定處理一個(gè)請求的對象集合,弁高效

20、率地處理一個(gè)請求C.使多個(gè)對象都有機(jī)會處理請求,避免請求的發(fā)送者和接收者間的耦合關(guān)系D.將對象連成一條鏈,弁沿著該鏈傳遞請求3 .若系統(tǒng)中的某子模塊需要為其它模塊()提供訪問不同數(shù)據(jù)庫系統(tǒng)(Oracle、SQL卻都是 設(shè)計(jì)模式可Server、DB2UDB等)的功能,這些數(shù)據(jù)庫系統(tǒng)提供的訪問接口有一定的差異,但訪問過程相同的,例如,先連接數(shù)據(jù)庫,再打開數(shù)據(jù)庫,最后對數(shù)據(jù)進(jìn)行查詢,抽象出相同的數(shù)據(jù)庫訪問過程;A.外觀B.裝飾C.單件D.模板方法4 .系統(tǒng)中的文本顯示類(TextView)和圖片顯示類(PictureView)都繼承了組件類(Component),分別顯示文本和圖片內(nèi)容,現(xiàn)需要構(gòu)造帶

21、有滾動(dòng)條、或者帶有黑色邊框、或者既有滾動(dòng)條又有黑色邊框的文本顯示控件和圖片顯示控件,但希望最多只增加三個(gè)類,()設(shè)計(jì)模式可以實(shí)現(xiàn)該目的。A.外觀B.裝飾C.單件D.模板方法5 .下面的類圖表示的是哪個(gè)模式?irwQnorSiAW ; siibjeci-sOdStaP)A.代理模式(Proxy) B.外觀模式(Facade)8.下面的類圖表明了哪個(gè)模式?ClsrtA.抽象工廠模式(Abstract Factory )C.命令模式(Command )D.責(zé)任鏈模式 (Chain of Responsibility )6.下面的類圖表示的是哪個(gè)設(shè)計(jì)模式?C.適配器模式(Adapter) D.橋接模式

22、(Bridge )Create Ftu1l£1A 。心sFEuti出內(nèi) 0(9181 MB.工廠方法模式(Factory Method )7.下面的類圖表示的是哪個(gè)模式?:cncrW的1t二"ereFEuctAivuftodKtBPnoucrWPrcdtrUl -M noOfftB2i;f 田 Q if (.7S£ V?>A.代理模式(Proxy ) B.裝飾模式(Decorator )C.橋接模式(Bridge ) D.觀察者模式(Observer )F3CfldCwetESutcl 一ConcrctoObscrveFCreatorpjoducl=Fact

23、oryMelhoddConct?lePtoduclWCunGNeCrtalcrFacto訕電帕叩A(chǔ)nOpralianil)OFactoAMethcKJt|口relumne-wCcncreteProduclA.責(zé)任鏈模式(ChainofResponsibility)8 .命令模式(Command)C.備忘錄模式(Mementc)D.工廠方法模式(FactoryMethod)9 .下面的類圖表示的是哪個(gè)設(shè)計(jì)模式?A.模板方法模式(TemplateMethod)B.命令模式(Command)C.單例模式(Singleton)D.狀態(tài)模式(State)10.下面的類圖表明了哪個(gè)模式?Singleton

24、別扣hejnsraftceO'SingiefonOperationQ歹uw映職和“往s-trtlkufvlqveinstances-ingtelQTt&aiaA.模板方法模式(TemplateMethod)B.命令模式(Command)C.單例模式(Singleton)D.狀態(tài)模式(State)二、填空題(分值20)請從外觀、訪問者、組合、工廠方法、模板方法、觀察者、享元、原型、責(zé)任鏈、單例、抽象工廠、命令12種模式中選擇10種填入下列的空缺中。1. ()模式中,父類負(fù)責(zé)定義創(chuàng)建對象的公共接口,子類則負(fù)責(zé)生成具體的對象。2. ()模式提供一系列相關(guān)或相互依賴對象的接口而無需指定

25、它們具體的類。3()模式用原型實(shí)例指定創(chuàng)建對象的種類,并且通過拷貝這些原型實(shí)例創(chuàng)建新的對象。4()模式確保某一個(gè)類僅有一個(gè)實(shí)例,并自行實(shí)例化并向整個(gè)系統(tǒng)提供這個(gè)實(shí)例。5 ()模式將對象組合成樹形結(jié)構(gòu)以表示“部分-整體”的層次結(jié)構(gòu)。使得用戶對單個(gè)對象和組合對象的使用具有一致性。6 ()模式定義了一個(gè)高層接口,這個(gè)接口使得這一子系統(tǒng)更加容易使用,為子系統(tǒng)中的一組接口提供一個(gè)一致的界面。7 ()模式運(yùn)用共享技術(shù)有效地支持大量細(xì)粒度的對象。8 ()模式使多個(gè)對象都有機(jī)會處理請求,從而避免請求的發(fā)送者和接收者之間的耦合關(guān)系。9 ()模式定義對象間的一種一對多的依賴關(guān)系,當(dāng)一個(gè)對象的狀態(tài)發(fā)生改變時(shí),所有依

26、賴于它的對象都得到通知并被自動(dòng)更新。10 ()模式定義一個(gè)操作中的算法的骨架,而將一些步驟延遲到子類中。三、簡答題(分值30)關(guān)于設(shè)計(jì)模式,請回答:A)什么是設(shè)計(jì)模式?設(shè)計(jì)模式的目標(biāo)是什么?(3分)B)設(shè)計(jì)模式具有哪三大特點(diǎn)?(3分)C)GOF設(shè)計(jì)模式常用的有幾種?GOF設(shè)計(jì)模式按照模式的目的可分為哪三類?(4分)1. 簡述面向?qū)ο蟪绦蛟O(shè)計(jì)的六大基本原則?(6分)2. 簡述什么是單例模式,以及他解決的問題,應(yīng)用的環(huán)境,解決的方案,模式的本質(zhì)?(8分)3. 為什么面向?qū)ο蟮姆治龊驮O(shè)計(jì)中優(yōu)先使用組合,而非繼承?四、程序閱讀題(分值15)在下面的C+弋碼中,類SalesTicket能夠完成打印票據(jù)正

27、文的功能,類HeadDecorator與FootDecorator分別完成打印票據(jù)的臺頭和腳注的功能。已知該程序運(yùn)行后的輸出結(jié)果如下所示。這是票據(jù)的臺頭!這是票據(jù)正文!這是票據(jù)的腳注!這是票據(jù)的臺頭!這是票據(jù)的腳注!C+程序代碼#include<iostream>usingnamespacestd;classSalesTicketpublic:virtualvoidprintTicket()cout<<"這是票據(jù)正文!"<<endl;classDecorator:publicSalesTicketSalesTicket*ticket;pu

28、blic:Decorator(SalesTicket*t)ticket=t;voidprintTicket()if(ticket!=NULL)ticket->printTicket();classHeadDecorator:publicDecoratorpublic:HeadDecorator(SalesTicket*t):Decorator(t)voidprintTicket()cout<<"這是票據(jù)的臺頭!"<<endl;Decorator:printTicket();classFootDecorator:publicDecoratorpu

29、blic:FootDecorator(SalesTicket*t):Decorator(t)voidprintTicket()Decorator:printTicket();cout<<"這是票據(jù)的腳注!"<<endl;voidmain(void)SalesTickett;FootDecoratorf(&t);HeadDecoratorh(&f);h.printTicket();cout<<""<<endl;FootDecoratora(NULL);HeadDecoratorb(&a

30、);b.printTicket();請根據(jù)題目描述、程序和輸出,闡述采用該設(shè)計(jì)模式進(jìn)行設(shè)計(jì)的優(yōu)勢?五、應(yīng)用題(分值15)一般的企業(yè)采購審批都是分級的,采購量的不同就需要不同層次的主管人員來審批,可以如主任審批1萬元以下的采購單,副董事長可以申批2.5萬元以下的采購單,董事長可以審批10萬元以下的采購單,10萬元以上的采購單就需要開會決定。請根據(jù)該描述,選擇合適的設(shè)計(jì)模式并給出其類圖。模擬試題51、 選擇題(分值20)1. 以動(dòng)作和事務(wù)聞名,且以對象形式用來封裝回滾、日志或者事務(wù)功能。這種設(shè)計(jì)模式是()A. 責(zé)任鏈模式B. 命令模式C. 觀察者模式D. 策略模式2. 以下不屬于創(chuàng)建型模式是()A

31、.PROXY(代理)B.BUILDER(生成器)C.PROTOTYP原型D.SINGLETON單件3. 以下不屬于結(jié)構(gòu)型模式是?()A.COMPOSITE(組合)B.ADAPTER(適配器)C.FLYWEIGHT(享元)D.SINGLETON單例)4. 以下不屬于行為型模式是?()A. COMMAND(命令)B. STRATEGY策略)C. MEMENTO(備忘錄)D. BRIDGE(橋接)5. 以下意圖那個(gè)是用來描述BUILDER(生成器)?()A. 定義一個(gè)用于創(chuàng)建對象的接口,讓子類決定實(shí)例化哪一個(gè)類B. 將一個(gè)復(fù)雜對象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示。C. 保證

32、一個(gè)類僅有一個(gè)實(shí)例,并提供一個(gè)訪問它的全局訪問點(diǎn)。D. 運(yùn)用共享技術(shù)有效地支持大量細(xì)粒度的對象。6. 以下意圖那個(gè)是用來描述PROTOTYPE原型)?()A. 允許一個(gè)對象在其內(nèi)部狀態(tài)改變時(shí)改變它的行為。對象看起來似乎修改了它的類。B. 表示一個(gè)作用于某對象結(jié)構(gòu)中的各元素的操作。它使你可以在不改變各元素的類的前提下定義作用于這些元素的新操作。C. 定義對象間的一種一對多的依賴關(guān)系,當(dāng)一個(gè)對象的狀態(tài)發(fā)生改變時(shí),所有依賴于它的對象都得到通知并被自動(dòng)更新。D. 用原型實(shí)例指定創(chuàng)建對象的種類,并通過拷貝這些原型創(chuàng)建新的對象。7. 以下意圖那個(gè)是用來描述ADAPTER(適配器)?()A. 將一個(gè)類的接口

33、轉(zhuǎn)換成客戶希望的另外一個(gè)接口。本模式使得原本由于接口不兼容而不能一起工作的那些類可以一起工作。B. 定義一個(gè)用于創(chuàng)建對象的接口,讓子類決定實(shí)例化哪一個(gè)類C. 表示一個(gè)作用于某對象結(jié)構(gòu)中的各元素的操作。它使你可以在不改變各元素的類的前提下定義作用于這些元素的新操作。D. 將一個(gè)請求封裝為一個(gè)對象,從而使你可用不同的請求對客戶進(jìn)行參數(shù)化;對請求排隊(duì)或記錄請求日志,以及支持可撤消的操作。8. 以下意圖那個(gè)是用來描述BRIDGE(橋接)?()A. 提供一個(gè)創(chuàng)建一系列相關(guān)或相互依賴對象的接口,而無需指定它們具體的類。B. 將抽象部分與它的實(shí)現(xiàn)部分分離,使它們都可以獨(dú)立地變化。C. 將一個(gè)復(fù)雜對象的構(gòu)建與

34、它的表示分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示。D. 動(dòng)態(tài)地給一個(gè)對象添加一些額外的職責(zé)。9. 以下哪個(gè)意圖是用來描述COMPOSITE(組合)?()A. 為其他對象提供一種代理以控制對這個(gè)對象的訪問。B. 運(yùn)用共享技術(shù)有效地支持大量細(xì)粒度的對象。C. 將對象組合成樹形結(jié)構(gòu)以表示部分-整體的層次結(jié)構(gòu)。D. 將一個(gè)復(fù)雜對象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示。10. 以下意圖那個(gè)是用來描述DECORATO(R裝飾)?()A. 運(yùn)用共享技術(shù)有效地支持大量細(xì)粒度的對象。B. 用原型實(shí)例指定創(chuàng)建對象的種類,并且通過拷貝這些原型創(chuàng)建新的對象。C. 將抽象部分與它的實(shí)現(xiàn)部分分離,

35、使它們都可以獨(dú)立地變化。D. 動(dòng)態(tài)地給一個(gè)對象添加一些額外的職責(zé)。11. 以下意圖那個(gè)是用來描述FACADE(外觀)?()A. 為子系統(tǒng)中的一組接口提供一個(gè)一致的界面,本模式定義了一個(gè)高層接口,這個(gè)接口使得這一子系統(tǒng)更加容易使用。B. 定義一個(gè)用于創(chuàng)建對象的接口,讓子類決定實(shí)例化哪一個(gè)類。C. 保證一個(gè)類僅有一個(gè)實(shí)例,并提供一個(gè)訪問它的全局訪問點(diǎn)。D. 在不破壞封裝性的前提下,捕獲一個(gè)對象的內(nèi)部狀態(tài),并在該對象之外保存這個(gè)狀態(tài)。這樣以后就可將該對象恢復(fù)到原先保存的狀態(tài)。12. 以下意圖那個(gè)是用來描述FLYWEIGH(T享元)?()A. 將抽象部分與它的實(shí)現(xiàn)部分分離,使它們都可以獨(dú)立地變化。B.

36、 運(yùn)用共享技術(shù)有效地支持大量細(xì)粒度的對象。C. 動(dòng)態(tài)地給一個(gè)對象添加一些額外的職責(zé)。D. 用原型實(shí)例指定創(chuàng)建對象的種類,并且過拷貝這些原型創(chuàng)建新的對象。13. 以下意圖那個(gè)是用來描述PROXY(代理)?()A. 用原型實(shí)例指定創(chuàng)建對象的種類,并且通過拷貝這些原型創(chuàng)建新的對象。B. 運(yùn)用共享技術(shù)有效地支持大量細(xì)粒度的對象。C. 為其他對象提供一種代理以控制對這個(gè)對象的訪問。D. 將一個(gè)復(fù)雜對象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示。14. 以下意圖那個(gè)是用來描述CHAINOFRESPONSIBILIT職責(zé)鏈)?()A. 為子系統(tǒng)中的一組接口提供一個(gè)一致的界面,本模式定義了一個(gè)高層接口,這個(gè)接口使得這一子系統(tǒng)更加容易使用。B. 提供一種方法順序訪問一個(gè)聚合對象中各個(gè)元素,而又不需暴露該對象的內(nèi)部表示。C. 在不破壞封裝性的前提下,捕獲一個(gè)對象的內(nèi)部狀態(tài),并在該對象之外保存這個(gè)狀態(tài)。這樣以后就可將該對象恢復(fù)到原先保存的狀態(tài)。D. 使多個(gè)對象都有機(jī)會處理請求,從而避免

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論