設(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頁,還剩23頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

總復(fù)習(xí)題復(fù)習(xí)參考資料:GoF設(shè)計(jì)模式設(shè)計(jì)模式解析易學(xué)設(shè)計(jì)模式大話設(shè)計(jì)模式進(jìn)一步淺出設(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)對(duì)擴(kuò)展開放,對(duì)修改關(guān)閉.B.應(yīng)當(dāng)對(duì)修改開放,對(duì)擴(kuò)展關(guān)閉C.應(yīng)當(dāng)對(duì)繼承開放,對(duì)修改關(guān)閉D.以上都不對(duì)4.當(dāng)我們想創(chuàng)建一個(gè)具體的對(duì)象而又不希望指定具體的類時(shí),可以使用()模式。A.創(chuàng)建型B.結(jié)構(gòu)型C行為型D.以上都可以5.要依賴于抽象,不要依賴于具體。即針對(duì)接口編程,不要針對(duì)實(shí)現(xiàn)編程,是()的表述A.開-閉原則B.接口隔離原則C.里氏代換原則D.依賴倒轉(zhuǎn)原則6.依據(jù)設(shè)計(jì)模式思想,程序開發(fā)中應(yīng)優(yōu)先使用的是()關(guān)系實(shí)現(xiàn)復(fù)用。A,委派B.繼承C創(chuàng)建D.以上都不對(duì)7.設(shè)計(jì)模式的兩大主題是()A.系統(tǒng)的維護(hù)與開發(fā)B對(duì)象組合與類的繼承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.以上都不對(duì)9.下列模式中,屬于行為模式的是()A.工廠模式B觀測(cè)者C適配器以上都是10.“不要和陌生人說話”是()原則的通俗表述A.接口隔離B.里氏代換C.依賴倒轉(zhuǎn)D.迪米特二、填空題(分值20)1.軟件體系結(jié)構(gòu)是指一個(gè)系統(tǒng)的有目的的設(shè)計(jì)和規(guī)劃,這個(gè)設(shè)計(jì)規(guī)劃既不描述,也不描述,它只描述系統(tǒng)的及其互相的。2.一個(gè)UML模型只描述了一個(gè)系統(tǒng),它并沒告訴我們系統(tǒng)是。3.接口是可以在整個(gè)模型中反復(fù)使用的一組行為,是一個(gè)沒有而只有的類。4.多重性指的是,某個(gè)類有個(gè)對(duì)象可以和另一個(gè)類的對(duì)象關(guān)聯(lián)。5.當(dāng)一個(gè)類的對(duì)象可以充當(dāng)多種角色時(shí),關(guān)聯(lián)就也許發(fā)生。6.在泛化關(guān)系中,可以替代。也就是說,后者出現(xiàn)的地方,前者都可以出現(xiàn)。但是反過來卻不成立。7.最通常的依賴關(guān)系是一個(gè)類操作的中用到了的定義。8.組成是的聚集,由于聚集中的每個(gè)部分體只能屬于整體。9.實(shí)現(xiàn)的符號(hào)和繼承的符號(hào)有相似之處,兩者的唯一差別是實(shí)現(xiàn)關(guān)系用表達(dá),繼承關(guān)系用表達(dá)。10.設(shè)計(jì)模式中應(yīng)優(yōu)先使用 而不是。三、判斷題(分值15)適配器模式屬于創(chuàng)建型模式()在設(shè)計(jì)模式中,“效果”只是指“因素和結(jié)果”()設(shè)計(jì)模式使代碼編制不能真正工程化()面向?qū)ο笳Z言編程中的異常解決,可以理解為責(zé)任鏈模式()反模式就是反對(duì)在軟件開發(fā)過程中使用設(shè)計(jì)模式()四、問答題(分值30)什么是設(shè)計(jì)模式?設(shè)計(jì)模式目的是什么?設(shè)計(jì)模式中一般都遵循的原則有什么?“GangofFour”針對(duì)“創(chuàng)建優(yōu)秀面向?qū)ο笤O(shè)計(jì)”建議了哪些策略?面向?qū)ο笙到y(tǒng)中功能復(fù)用的兩種最常用技術(shù)是什么?只根據(jù)抽象類中定義的接口來操縱對(duì)象有什么好處?五、應(yīng)用題(分值15)公司架構(gòu):經(jīng)理、工程師、技師和后勤人員都是公司的雇員,經(jīng)理管理工程師、技師和后勤人員。高層經(jīng)理領(lǐng)導(dǎo)較低檔別的經(jīng)理。典型層次圖如下:可以使用哪種設(shè)計(jì)模式實(shí)現(xiàn)公司的層級(jí)關(guān)系?并說明為什么?

模擬試題2一、選擇題(分值20)1.在觀測(cè)者模式中,表述錯(cuò)誤的是()A.觀測(cè)者角色的更新是被動(dòng)的。B.被觀測(cè)者可以告知觀測(cè)者進(jìn)行更新C.觀測(cè)者可以改變被觀測(cè)者的狀態(tài),再由被觀測(cè)者告知所有觀測(cè)者依據(jù)被觀測(cè)者的狀態(tài)進(jìn)行。D.以上表述所有錯(cuò)誤。2.對(duì)于違反里式代換原則的兩個(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”還是”Has-a”。假如是“Is-a”,可以使用繼承關(guān)系,假如是”Has-a”應(yīng)當(dāng)改成委派關(guān)系D.以上方案錯(cuò)誤3.下列模式屬于結(jié)構(gòu)型設(shè)計(jì)模式的是()A.CompositeB.享元(Flyweight)模式C.單體模式D.工廠方法4.關(guān)于繼承表述錯(cuò)誤的是:()A.繼承是一種通過擴(kuò)展一個(gè)已有對(duì)象的實(shí)現(xiàn),從而獲得新功能的復(fù)用方法。B.泛化類(超類)可以顯式地捕獲那些公共的屬性和方法。特殊類(子類)則通過附加屬性和方法來進(jìn)行實(shí)現(xiàn)的擴(kuò)展。C.破壞了封裝性,由于這會(huì)將父類的實(shí)現(xiàn)細(xì)節(jié)暴露給子類。D.繼承本質(zhì)上是“白盒復(fù)用”,對(duì)父類的修改,不會(huì)影響到子類。5.對(duì)于依賴倒轉(zhuǎn)的表述錯(cuò)誤的是()A.依賴于抽象而不依賴于具體,也就是針對(duì)接口編程。B.依賴倒轉(zhuǎn)的接口并非語法意義上的接口,而是一個(gè)類對(duì)其他對(duì)象進(jìn)行調(diào)用時(shí),所知道的方法集合。C.從選項(xiàng)B的角度論述,一個(gè)對(duì)象可以有多個(gè)接口。D.實(shí)現(xiàn)了同一接口的對(duì)象,可以在運(yùn)營(yíng)期間,順利地進(jìn)行替換。并且不必知道所用的對(duì)象是那個(gè)實(shí)現(xiàn)類的實(shí)例。E.此題沒有對(duì)的答案。6.可以使用哪一種設(shè)計(jì)模式限制類的實(shí)例唯一?()A.工廠方法B.生成器模式C.原型模式D.單體模式7.Java數(shù)據(jù)庫連接庫JDBC用到哪種設(shè)計(jì)模式()?A.生成器B.工廠方法C.抽象工廠D.單體8.關(guān)于運(yùn)用GOF工廠方法的效果Consequences,說法不對(duì)的的是()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.抽象構(gòu)造器C.虛工廠D.虛構(gòu)造器10.可以使用哪種設(shè)計(jì)模式將抽象和實(shí)現(xiàn)解耦,使得抽象和實(shí)現(xiàn)可以獨(dú)自變化?()A.適配器模式B.橋接模式C.外觀模式D.組合橋接模式二、填空題(分值20)面向?qū)ο蟮钠邨l基本原則涉及:開閉原則,里式代換原則,合成聚合原則以及(),(),(),()。在存在繼承關(guān)系的情況下,方法向()方向集中,而數(shù)據(jù)向()方向集中。適配器模式,分為類的適配器和對(duì)象的適配器兩種實(shí)現(xiàn)。其中類的適配器采用的是()關(guān)系,而對(duì)象適配器采用的是()關(guān)系。設(shè)計(jì)模式的四個(gè)基本要素是(),(),()和()。.創(chuàng)建型模式的主線意圖是要把()和()的責(zé)任進(jìn)行分離,從而減少系統(tǒng)的()。工廠模式分為(),(),()三種類型。門面模式是()法則的典型運(yùn)用MVC模型的基本工作原理是基于()模式,實(shí)現(xiàn)是基于()模式設(shè)計(jì)模式的思想根源是()基本原則的宏觀運(yùn)用,本質(zhì)上是沒有任何模式的,發(fā)現(xiàn)模式的人永遠(yuǎn)是大師,而死守模式的人,最對(duì)只能是一個(gè)工匠.三、判斷題(分值15)虛擬代理可以使用一個(gè)小對(duì)象代替大對(duì)象,從而減少系統(tǒng)的資源的消耗,提高系統(tǒng)運(yùn)營(yíng)速度。()命令模式可以消除請(qǐng)求發(fā)送者與請(qǐng)求接受者彼此之間的耦合,使得對(duì)象之間的關(guān)系更加靈活。()解釋器模式是對(duì)象行為型模式,通常較少使用。()迭代器模式是開閉原則最佳體現(xiàn),由于迭代器模式將聚合對(duì)象和迭代器分離開來。()中介者模式設(shè)計(jì)符合單一職責(zé)原則。()得分評(píng)卷人四、問答題(分值30)1.在MVC模型中M、V、C分別指什么?簡(jiǎn)述它們之間的關(guān)系?2.什么是開閉原則?3.設(shè)計(jì)數(shù)據(jù)庫的系統(tǒng)日記,要考慮使用哪些設(shè)計(jì)模式?4.使用工廠模式的重要因素是什么?5.在面向?qū)ο笤O(shè)計(jì)中,《編譯原理》的有限狀態(tài)機(jī)可以什么樣解決方案完畢?五、應(yīng)用題(分值20)考慮如下場(chǎng)景的設(shè)計(jì):貓大叫一聲,所有的老鼠都開始逃跑,主人被驚醒。問:(1)設(shè)計(jì)也許用到什么設(shè)計(jì)模式?(2)畫出其類圖。

模擬試題3一、多項(xiàng)選擇題(分值30)(1)以下是模式的基本要素的是()A)名稱B)意圖C)解決方案D)參與者和協(xié)作者(2)常用的描述設(shè)計(jì)模式的格式有()A)意圖B)動(dòng)機(jī)C)合用性D)結(jié)構(gòu)(3)以下哪些問題通過應(yīng)用設(shè)計(jì)模式可以解決()。A)指定對(duì)象的接口B)排除軟件BUGC)擬定軟件的功能都正的確現(xiàn)D)設(shè)計(jì)應(yīng)支持變化(4)面向?qū)ο笙到y(tǒng)中功能復(fù)用的最常用技術(shù)是()。A)類繼承B)對(duì)象組合C)使用抽象類D)使用實(shí)現(xiàn)類(5)常用的基本設(shè)計(jì)模式可分為()。A)創(chuàng)建型、結(jié)構(gòu)型和行為型B)對(duì)象型、結(jié)構(gòu)型和行為型C)過程型、結(jié)構(gòu)型和行為型D)抽象型、接口型和實(shí)現(xiàn)型(6)以下關(guān)于創(chuàng)建型模式說法對(duì)的的是()。A)創(chuàng)建型模式關(guān)注的是對(duì)象的創(chuàng)建B)創(chuàng)建型模式關(guān)注的是功能的實(shí)現(xiàn)C)創(chuàng)建型模式關(guān)注的是組織類和對(duì)象的常用方法D)創(chuàng)建型模式關(guān)注的是對(duì)象間的協(xié)作(7)以下屬于創(chuàng)建型模式的是()。A)抽象工廠(AbstractFactory)模式B)合成(Composite)模式C)單例(Singleton)模式D)橋接(Bridge)模式(8)()模式是運(yùn)用一個(gè)對(duì)象,快速生成一批對(duì)象。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)模式(10)結(jié)構(gòu)型模式中最體現(xiàn)擴(kuò)展性的幾種模式是()A)適配器(Adapter)模式B)合成(Composite)模式C)裝飾(Decorator)模式D)橋接(Bridge)模式(11)行為類模式使用()在類間分派行為。A)接口B)繼承機(jī)制C)對(duì)象組合D)委托(12)以下屬于行為對(duì)象模式的是()A)模板(TemplateMethod)模式B)迭代器(Iterator)模式C)命令(Command)模式D)觀測(cè)者(Observer)模式(13)封裝分布于多個(gè)類之間的行為的模式是()A)觀測(cè)者(Observer)模式B)迭代器(Iterator)模式C)訪問者(Visitor)模式D)策略(Strategy)模式(14)Observer(觀測(cè)者)模式合用于()A)當(dāng)一個(gè)抽象模型存在兩個(gè)方面,其中一個(gè)方面依賴于另一方面,將這兩者封裝在獨(dú)立的對(duì)象中以使它們可以各自獨(dú)立地改變和復(fù)用。B)當(dāng)對(duì)一個(gè)對(duì)象的改變需要同時(shí)改變其它對(duì)象,而不知道具體有多少對(duì)象有待改變時(shí)。C)當(dāng)一個(gè)對(duì)象必須告知其它對(duì)象,而它又不能假定其它對(duì)象是誰。也就是說你不希望這些對(duì)象是緊耦合的。D)一個(gè)對(duì)象結(jié)構(gòu)包含很多類對(duì)象,它們有不同的接口,而想對(duì)這些對(duì)象實(shí)行一些依賴于其具體類的操作。(15)Java的異常解決機(jī)制可理解為哪一種行為模式()。A)觀測(cè)者(Observer)模式B)迭代器(Iterator)模式C)職責(zé)鏈(ChainofResponsibility)模式D)策略(Strategy)模式二、填空題(分值20)把下列面向?qū)ο蟮男g(shù)語填入相應(yīng)的括號(hào)中:里氏替換(LSP)、接口隔離(ISP)、依賴倒置(DIP)、單一職責(zé)(SRP)、開閉(OCP)、優(yōu)先使用組合(CARP)、接口()原則的核心思想是系統(tǒng)中的每一個(gè)對(duì)象都應(yīng)當(dāng)只有一個(gè)單獨(dú)的職責(zé),而所有對(duì)象所關(guān)注的就是自身職責(zé)的完畢。()原則的核心思想是一個(gè)對(duì)象對(duì)擴(kuò)展開放,對(duì)修改關(guān)閉;實(shí)現(xiàn)此原則的關(guān)鍵就在于()、分離出()部分和()部分。()原則的核心思想是在任何父類出現(xiàn)的地方都可以用它的子類來替代。()原則的核心思想是要依賴于抽象,而不要依賴于具體的實(shí)現(xiàn)。()原則的核心思想是不應(yīng)當(dāng)逼迫客戶程序依賴于他們不用的方法。即一個(gè)接口不需要提供太多的行為,應(yīng)當(dāng)只提供一種對(duì)外的功能,不應(yīng)當(dāng)把所有的操作都封裝在一個(gè)接口中。()原則的核心思想是一個(gè)對(duì)象應(yīng)當(dāng)對(duì)其它對(duì)象盡也許少的了解?;蛘哒f,只和你的朋友說話。這樣一些對(duì)象可以看做朋友:當(dāng)前對(duì)象自身、通過方法的參數(shù)傳遞進(jìn)來的對(duì)象、當(dāng)前對(duì)象所創(chuàng)建的對(duì)象、當(dāng)前對(duì)象的實(shí)例變量所引用的對(duì)象和方法內(nèi)所創(chuàng)建或者實(shí)例化的對(duì)象。()原則的核心思想是優(yōu)先使用組合而非繼承。設(shè)計(jì)模式應(yīng)當(dāng)面向()編程三、判斷題(分值10)單一職責(zé)原則表現(xiàn)在面向?qū)ο蟮某绦蛑芯褪恰案邇?nèi)聚、低耦合”。()設(shè)計(jì)模式只能遵從使用,不能也無需創(chuàng)新。()在面向?qū)ο缶幊虝r(shí),無論何時(shí)何地都要使用GoF所給出的設(shè)計(jì)模式,這樣編寫的代碼才比較好。()工廠方法可以提高內(nèi)聚性,松散耦合,并且有助于測(cè)試。()對(duì)象要么構(gòu)造其它對(duì)象,要么使用其它對(duì)象,絕不要兩者兼顧。()四、問答題(分值30)單例模式的兩種實(shí)現(xiàn)方法,并說明優(yōu)缺陷?什么是對(duì)象粒度?MVC模式是個(gè)復(fù)合模式,請(qǐng)寫出你兩種你所知道的MVC中使用的模式。舉例說明,適配器模式和裝配器在JavaIO中的應(yīng)用。在面向?qū)ο蟪绦蛟O(shè)計(jì)中,經(jīng)常需要避免過多case語句或者if語句,請(qǐng)給出一種設(shè)計(jì)模式避免過多的條件分支語句,同時(shí)指出這種設(shè)計(jì)模式如何幫助避免過多的Case語句?五、應(yīng)用題(分值10)某房地產(chǎn)公司欲開發(fā)一套房產(chǎn)信息管理系統(tǒng),根據(jù)如下描述選擇合適的設(shè)計(jì)模式進(jìn)行設(shè)計(jì):(1)該公司有多種房型,如公寓、別墅等,在將來也許會(huì)增長(zhǎng)新的房型;(2)銷售人員每售出一套房子,主管將收到相應(yīng)的銷售消息。假如對(duì)上述場(chǎng)景編程,那么上述(1)和(2)也許分別用到哪些設(shè)計(jì)模式?模擬試題4一、選擇題(分值20)1.設(shè)計(jì)模式具有的優(yōu)點(diǎn)()。A.適應(yīng)需求變化B.程序易于理解C.減少開發(fā)過程中的代碼開發(fā)工作量D.簡(jiǎn)化軟件系統(tǒng)的設(shè)計(jì)2.下圖描述了一種設(shè)計(jì)模式,該設(shè)計(jì)模式不可以()。A.動(dòng)態(tài)決定由一組對(duì)象中某個(gè)對(duì)象解決該請(qǐng)求B.動(dòng)態(tài)指定解決一個(gè)請(qǐng)求的對(duì)象集合,并高效率地解決一個(gè)請(qǐng)求C.使多個(gè)對(duì)象都有機(jī)會(huì)解決請(qǐng)求,避免請(qǐng)求的發(fā)送者和接受者間的耦合關(guān)系D.將對(duì)象連成一條鏈,并沿著該鏈傳遞請(qǐng)求3.若系統(tǒng)中的某子模塊需要為其它模塊()提供訪問不同數(shù)據(jù)庫系統(tǒng)(Oracle、SQLServer、DB2UDB等)的功能,這些數(shù)據(jù)庫系統(tǒng)提供的訪問接口有一定的差異,但訪問過程卻都是相同的,例如,先連接數(shù)據(jù)庫,再打開數(shù)據(jù)庫,最后對(duì)數(shù)據(jù)進(jìn)行查詢,設(shè)計(jì)模式可抽象出相同的數(shù)據(jù)庫訪問過程;A.外觀B.裝飾C.單件D.模板方法4.系統(tǒng)中的文本顯示類(TextView)和圖片顯示類(PictureView)都繼承了組件類(Component),分別顯示文本和圖片內(nèi)容,現(xiàn)需要構(gòu)造帶有滾動(dòng)條、或者帶有黑色邊框、或者既有滾動(dòng)條又有黑色邊框的文本顯示控件和圖片顯示控件,但希望最多只增長(zhǎng)三個(gè)類,()設(shè)計(jì)模式可以實(shí)現(xiàn)該目的。A.外觀B.裝飾C.單件D.模板方法5.下面的類圖表達(dá)的是哪個(gè)模式?A.抽象工廠模式(AbstractFactory)B.工廠方法模式(FactoryMethod)C.命令模式(Command)D.責(zé)任鏈模式(ChainofResponsibility)6.下面的類圖表達(dá)的是哪個(gè)設(shè)計(jì)模式?A.代理模式(Proxy)B.裝飾模式(Decorator)C.橋接模式(Bridge)D.觀測(cè)者模式(Observer)7.下面的類圖表達(dá)的是哪個(gè)模式?A.代理模式(Proxy)B.外觀模式(Facade)C.適配器模式(Adapter)D.橋接模式(Bridge)8.下面的類圖表白了哪個(gè)模式?A.責(zé)任鏈模式(ChainofResponsibility)B.命令模式(Command)C.備忘錄模式(Memento)D.工廠方法模式(FactoryMethod)9.下面的類圖表達(dá)的是哪個(gè)設(shè)計(jì)模式?A.模板方法模式(TemplateMethod)B.命令模式(Command)C.單例模式(Singleton)D.狀態(tài)模式(State)10.下面的類圖表白了哪個(gè)模式?A.模板方法模式(TemplateMethod)B.命令模式(Command)C.單例模式(Singleton)D.狀態(tài)模式(State)二、填空題(分值20)請(qǐng)從外觀、訪問者、組合、工廠方法、模板方法、觀測(cè)者、享元、原型、責(zé)任鏈、單例、抽象工廠、命令12種模式中選擇10種填入下列的空缺中。1.()模式中,父類負(fù)責(zé)定義創(chuàng)建對(duì)象的公共接口,子類則負(fù)責(zé)生成具體的對(duì)象。2.()模式提供一系列相關(guān)或互相依賴對(duì)象的接口而無需指定它們具體的類。3.()模式用原型實(shí)例指定創(chuàng)建對(duì)象的種類,并且通過拷貝這些原型實(shí)例創(chuàng)建新的對(duì)象。4.()模式保證某一個(gè)類僅有一個(gè)實(shí)例,并自行實(shí)例化并向整個(gè)系統(tǒng)提供這個(gè)實(shí)例。5.()模式將對(duì)象組合成樹形結(jié)構(gòu)以表達(dá)“部分-整體”的層次結(jié)構(gòu)。使得用戶對(duì)單個(gè)對(duì)象和組合對(duì)象的使用品有一致性。6.()模式定義了一個(gè)高層接口,這個(gè)接口使得這一子系統(tǒng)更加容易使用,為子系統(tǒng)中的一組接口提供一個(gè)一致的界面。7.()模式運(yùn)用共享技術(shù)有效地支持大量細(xì)粒度的對(duì)象。8.()模式使多個(gè)對(duì)象都有機(jī)會(huì)解決請(qǐng)求,從而避免請(qǐng)求的發(fā)送者和接受者之間的耦合關(guān)系。9.()模式定義對(duì)象間的一種一對(duì)多的依賴關(guān)系,當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生改變時(shí),所有依賴于它的對(duì)象都得到告知并被自動(dòng)更新。10.()模式定義一個(gè)操作中的算法的骨架,而將一些環(huán)節(jié)延遲到子類中。三、簡(jiǎn)答題(分值30)關(guān)于設(shè)計(jì)模式,請(qǐng)回答:A)什么是設(shè)計(jì)模式?設(shè)計(jì)模式的目的是什么?(3分)B)設(shè)計(jì)模式具有哪三大特點(diǎn)?(3分)C)GOF設(shè)計(jì)模式常用的有幾種?GOF設(shè)計(jì)模式按照模式的目的可分為哪三類?(4分)簡(jiǎn)述面向?qū)ο蟪绦蛟O(shè)計(jì)的六大基本原則?(6分)簡(jiǎn)述什么是單例模式,以及他解決的問題,應(yīng)用的環(huán)境,解決的方案,模式的本質(zhì)?(8分)為什么面向?qū)ο蟮姆治龊驮O(shè)計(jì)中優(yōu)先使用組合,而非繼承?四、程序閱讀題(分值15)在下面的C++代碼中,類SalesTicket可以完畢打印票據(jù)正文的功能,類HeadDecorator與FootDecorator分別完畢打印票據(jù)的臺(tái)頭和腳注的功能。已知該程序運(yùn)營(yíng)后的輸出結(jié)果如下所示。這是票據(jù)的臺(tái)頭!這是票據(jù)正文!這是票據(jù)的腳注!------------------------這是票據(jù)的臺(tái)頭!這是票據(jù)的腳注![C++程序代碼]#include<iostream>usingnamespacestd;classSalesTicket{public:virtualvoidprintTicket(){cout<<"這是票據(jù)正文!"<<endl;}};classDecorator:publicSalesTicket{SalesTicket*ticket;public:Decorator(SalesTicket*t){ticket=t;}voidprintTicket(){if(ticket!=NULL)ticket->printTicket();}};classHeadDecorator:publicDecorator{public:HeadDecorator(SalesTicket*t):Decorator(t){}voidprintTicket(){cout<<"這是票據(jù)的臺(tái)頭!"<<endl;Decorator::printTicket();}};classFootDecorator:publicDecorator{public: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);b.printTicket();}請(qǐng)根據(jù)題目描述、程序和輸出,闡述采用該設(shè)計(jì)模式進(jìn)行設(shè)計(jì)的優(yōu)勢(shì)?五、應(yīng)用題(分值15)一般的公司采購審批都是分級(jí)的,采購量的不同就需要不同層次的主管人員來審批,如主任可以審批1萬元以下的采購單,副董事長(zhǎng)可以申批2.5萬元以下的采購單,董事長(zhǎng)可以審批10萬元以下的采購單,10萬元以上的采購單就需要開會(huì)決定。請(qǐng)根據(jù)該描述,選擇合適的設(shè)計(jì)模式并給出其類圖。模擬試題5一、選擇題(分值20)1.以動(dòng)作和事務(wù)聞名,且以對(duì)象形式用來封裝回滾、日記或者事務(wù)功能。這種設(shè)計(jì)模式是()A.責(zé)任鏈模式B.命令模式C.觀測(cè)者模式D.策略模式2.以下不屬于創(chuàng)建型模式是()PROXY(代理)B.BUILDER(生成器)C.PROTOTYPE原型D.SINGLETON單件3.以下不屬于結(jié)構(gòu)型模式是?()COMPOSITE(組合)B.ADAPTER(適配器)C.FLYWEIGHT(享元)D.SINGLETON(單例)以下不屬于行為型模式是?()COMMAND(命令)STRATEGY(策略)MEMENTO(備忘錄)BRIDGE(橋接)以下意圖那個(gè)是用來描述BUILDER(生成器)?()定義一個(gè)用于創(chuàng)建對(duì)象的接口,讓子類決定實(shí)例化哪一個(gè)類將一個(gè)復(fù)雜對(duì)象的構(gòu)建與它的表達(dá)分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表達(dá)。保證一個(gè)類僅有一個(gè)實(shí)例,并提供一個(gè)訪問它的全局訪問點(diǎn)。運(yùn)用共享技術(shù)有效地支持大量細(xì)粒度的對(duì)象。以下意圖那個(gè)是用來描述PROTOTYPE(原型)?()允許一個(gè)對(duì)象在其內(nèi)部狀態(tài)改變時(shí)改變它的行為。對(duì)象看起來似乎修改了它的類。表達(dá)一個(gè)作用于某對(duì)象結(jié)構(gòu)中的各元素的操作。它使你可以在不改變各元素的類的前提下定義作用于這些元素的新操作。C.定義對(duì)象間的一種一對(duì)多的依賴關(guān)系,當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生改變時(shí),所有依賴于它的對(duì)象都得到告知并被自動(dòng)更新。D.用原型實(shí)例指定創(chuàng)建對(duì)象的種類,并通過拷貝這些原型創(chuàng)建新的對(duì)象。以下意圖那個(gè)是用來描述ADAPTER(適配器)?()將一個(gè)類的接口轉(zhuǎn)換成客戶希望的此外一個(gè)接口。本模式使得原本由于接口不兼容而不能一起工作的那些類可以一起工作。B.定義一個(gè)用于創(chuàng)建對(duì)象的接口,讓子類決定實(shí)例化哪一個(gè)類C.表達(dá)一個(gè)作用于某對(duì)象結(jié)構(gòu)中的各元素的操作。它使你可以在不改變各元素的類的前提下定義作用于這些元素的新操作。D.將一個(gè)請(qǐng)求封裝為一個(gè)對(duì)象,從而使你可用不同的請(qǐng)求對(duì)客戶進(jìn)行參數(shù)化;對(duì)請(qǐng)求排隊(duì)或記錄請(qǐng)求日記,以及支持可撤消的操作。8.以下意圖那個(gè)是用來描述BRIDGE(橋接)?()A.提供一個(gè)創(chuàng)建一系列相關(guān)或互相依賴對(duì)象的接口,而無需指定它們具體的類。B.將抽象部分與它的實(shí)現(xiàn)部分分離,使它們都可以獨(dú)立地變化。C.將一個(gè)復(fù)雜對(duì)象的構(gòu)建與它的表達(dá)分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表達(dá)。D.動(dòng)態(tài)地給一個(gè)對(duì)象添加一些額外的職責(zé)。9.以下哪個(gè)意圖是用來描述COMPOSITE(組合)?()為其他對(duì)象提供一種代理以控制對(duì)這個(gè)對(duì)象的訪問。運(yùn)用共享技術(shù)有效地支持大量細(xì)粒度的對(duì)象。將對(duì)象組合成樹形結(jié)構(gòu)以表達(dá)部分-整體的層次結(jié)構(gòu)。將一個(gè)復(fù)雜對(duì)象的構(gòu)建與它的表達(dá)分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表達(dá)。以下意圖那個(gè)是用來描述DECORATOR(裝飾)?()運(yùn)用共享技術(shù)有效地支持大量細(xì)粒度的對(duì)象。用原型實(shí)例指定創(chuàng)建對(duì)象的種類,并且通過拷貝這些原型創(chuàng)建新的對(duì)象。將抽象部分與它的實(shí)現(xiàn)部分分離,使它們都可以獨(dú)立地變化。動(dòng)態(tài)地給一個(gè)對(duì)象添加一些額外的職責(zé)。以下意圖那個(gè)是用來描述FACADE(外觀)?()A.為子系統(tǒng)中的一組接口提供一個(gè)一致的界面,本模式定義了一個(gè)高層接口,這個(gè)接口使得這一子系統(tǒng)更加容易使用。B.定義一個(gè)用于創(chuàng)建對(duì)象的接口,讓子類決定實(shí)例化哪一個(gè)類。C.保證一個(gè)類僅有一個(gè)實(shí)例,并提供一個(gè)訪問它的全局訪問點(diǎn)。D.在不破壞封裝性的前提下,捕獲一個(gè)對(duì)象的內(nèi)部狀態(tài),并在該對(duì)象之外保存這個(gè)狀態(tài)。這樣以后就可將該對(duì)象恢復(fù)到原先保存的狀態(tài)。以下意圖那個(gè)是用來描述FLYWEIGHT(享元)?()A.將抽象部分與它的實(shí)現(xiàn)部分分離,使它們都可以獨(dú)立地變化。B.運(yùn)用共享技術(shù)有效地支持大量細(xì)粒度的對(duì)象。C.動(dòng)態(tài)地給一個(gè)對(duì)象添加一些額外的職責(zé)。D.用原型實(shí)例指定創(chuàng)建對(duì)象的種類,并且過拷貝這些原型創(chuàng)建新的對(duì)象。以下意圖那個(gè)是用來描述PROXY(代理)?()用原型實(shí)例指定創(chuàng)建對(duì)象的種類,并且通過拷貝這些原型創(chuàng)建新的對(duì)象。運(yùn)用共享技術(shù)有效地支持大量細(xì)粒度的對(duì)象。C.為其他對(duì)象提供一種代理以控制對(duì)這個(gè)對(duì)象的訪問。D.將一個(gè)復(fù)雜對(duì)象的構(gòu)建與它的表達(dá)分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表達(dá)。以下意圖那個(gè)是用來描述CHAINOFRESPONSIBILITY(職責(zé)鏈)?()為子系統(tǒng)中的一組接口提供一個(gè)一致的界面,本模式定義了一個(gè)高層接口,這個(gè)接口使得這一子系統(tǒng)更加容易使用。B.提供一種方法順序訪問一個(gè)聚合對(duì)象中各個(gè)元素,而又不需暴露該對(duì)象的內(nèi)部表達(dá)。C.在不破壞封裝性的前提下,捕獲一個(gè)對(duì)象的內(nèi)部狀態(tài),并在該對(duì)象之

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論