軟件設(shè)計(jì)模式試題集_第1頁(yè)
軟件設(shè)計(jì)模式試題集_第2頁(yè)
軟件設(shè)計(jì)模式試題集_第3頁(yè)
軟件設(shè)計(jì)模式試題集_第4頁(yè)
軟件設(shè)計(jì)模式試題集_第5頁(yè)
已閱讀5頁(yè),還剩32頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、.wd.wd.wd.第5章 設(shè)計(jì)模式一.選擇1. 設(shè)計(jì)模式具有的優(yōu)點(diǎn)。A適應(yīng)需求變化 B.程序易于理解C減少開(kāi)發(fā)過(guò)程中的代碼開(kāi)發(fā)工作量 D.簡(jiǎn)化軟件系統(tǒng)的設(shè)計(jì)2. 設(shè)計(jì)模式一般用來(lái)解決什么樣的問(wèn)題( )。A.同一問(wèn)題的不同表相 B不同問(wèn)題的同一表相C.不同問(wèn)題的不同表相 D.以上都不是3. 設(shè)計(jì)模式的兩大主題是( )。A.系統(tǒng)的維護(hù)與開(kāi)發(fā) B 對(duì)象組合與類的繼承C.系統(tǒng)架構(gòu)與系統(tǒng)開(kāi)發(fā)D.系統(tǒng)復(fù)用與系統(tǒng)擴(kuò)展4. 以下哪些問(wèn)題通過(guò)應(yīng)用設(shè)計(jì)模式不能夠解決 。A指定對(duì)象的接口 B針對(duì)接口編程C確定軟件的功能都正確實(shí)現(xiàn) D設(shè)計(jì)應(yīng)支持變化解答:1. A2. A3. D4. C二.填空1. 模式的 根本要素

2、包括名稱、意圖、問(wèn)題、解決方案、參與者和協(xié)作者、 、實(shí)現(xiàn)、GoF參考。2. 設(shè)計(jì)模式 根本原那么包括:開(kāi)閉原那么, ,包容變化原那么。3. 設(shè)計(jì)模式是一個(gè)( )的方案,它可以解決一類問(wèn)題。4. 1. 在設(shè)計(jì)模式群體中,效果是指 。解答:1. 效果2. 從場(chǎng)景進(jìn)展設(shè)計(jì)的原那么3. 抽象4. 原因和結(jié)果三.判斷1. 適配器模式屬于創(chuàng)立型模式。2. 在設(shè)計(jì)模式中,“效果只是指“原因和結(jié)果。3. 設(shè)計(jì)模式使代碼編制不能真正工程化。4. 設(shè)計(jì)模式的兩大主題是系統(tǒng)復(fù)用與系統(tǒng)擴(kuò)展。解答:1. 錯(cuò)2. 對(duì)3. 錯(cuò)4. 對(duì)四.名詞解釋1. 設(shè)計(jì)模式2. 模板3. 模式4. 內(nèi)聚度解答:1. 是一套被反復(fù)使用、多

3、數(shù)人知曉的、經(jīng)過(guò)分類編目的、代碼設(shè)計(jì)經(jīng)歷的總結(jié)。使用設(shè)計(jì)模式是為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性2. 模式定義一個(gè)操作中的算法的骨架,而將一些步驟延遲到子類中。3. 就是解決某一類問(wèn)題的方法論。把解決某類問(wèn)題的方法總結(jié)歸納到理論高度,那就是模式。4.五.簡(jiǎn)答題1. 什么是設(shè)計(jì)模式設(shè)計(jì)模式的目標(biāo)是什么2. 設(shè)計(jì)模式的 根本要素有哪些3. 設(shè)計(jì)模式中一般都遵循的原那么有什么4. 四人團(tuán)針對(duì)“創(chuàng)立優(yōu)秀面向?qū)ο笤O(shè)計(jì)建議了哪些策略解答:1. 設(shè)計(jì)模式是一套被反復(fù)使用、多數(shù)人知曉的、經(jīng)過(guò)分類編目的、代碼設(shè)計(jì)經(jīng)歷的總結(jié)。使用設(shè)計(jì)模式是為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性

4、。2. 設(shè)計(jì)模式的 根本要素有:名稱,意圖,問(wèn)題,解決方案,參與者和協(xié)作者,效果,實(shí)現(xiàn),GOF參考。3. 開(kāi)-閉原那么,根據(jù)場(chǎng)景進(jìn)展設(shè)計(jì)原那么,優(yōu)先組合原那么,包容變化原那么。4. 針對(duì)接口編程,優(yōu)先使用對(duì)象組合而不是類繼承,找到并封裝變化點(diǎn)。六.應(yīng)用題解答:第6章 facade(外觀)模式一.選擇1. 外觀模式的作用是。A當(dāng)不能采用生成子類的方法進(jìn)展擴(kuò)大時(shí),動(dòng)態(tài)地給一個(gè)對(duì)象添加一些額外的功能。B為了系統(tǒng)中的一組功能調(diào)用提供一個(gè)一致的接口,這個(gè)接口使得這一子系統(tǒng)更加容易使用。C保證一個(gè)類僅有一個(gè)實(shí)例,并提供一個(gè)訪問(wèn)他的全局訪問(wèn)點(diǎn)。D在方法中定義算法的框架,而將算法中的一些操作步驟延遲到子類中實(shí)

5、現(xiàn)。2. Faade外觀模式的意圖是。A. 希望簡(jiǎn)化現(xiàn)有系統(tǒng)的使用方法。你需要定義自己的借口。B將一個(gè)無(wú)法控制的現(xiàn)有對(duì)象與一個(gè)特定借口相匹配。C. 將一組實(shí)現(xiàn)局部從另一組使用它們的對(duì)象中別離出來(lái)。D你需要為特定的客戶或情況提供特定系列的對(duì)象。3. 模式定義了一個(gè)高層接口,這個(gè)接口使得這一子系統(tǒng)更加容易使用。A. Adapter適配器模式 B. Bridge橋接模式C. Strategy策略模式 D.Facade 外觀模式4. 下面屬于構(gòu)造模式的有。A觀察者模式Observer B.單例模式SingletonC.策略模式Strategy D外觀模式Faade解答:1. B2. A3. D4. D

6、二.填空1. Facade模式可以用來(lái) 系統(tǒng)。該模式能夠?qū)⑾到y(tǒng)作為自己的私有成員包含進(jìn)來(lái)。2. Faade模式需要解決的問(wèn)題是:只需要使用一個(gè)復(fù)雜系統(tǒng)的一個(gè)。或者,需要用一種特殊的方式與系統(tǒng)交互。3. Faade模式不僅可以為方法調(diào)用創(chuàng)立更 的接口,還可以減少客戶必須處理的對(duì)象數(shù)量。4. Faade外觀模式的解決方案是向客戶展現(xiàn)使用現(xiàn)有系統(tǒng)的一個(gè)新的 。解答:1. 隱藏2. 子集3. 簡(jiǎn)單4. 接口三.判斷1. Faade外觀模式不僅可以為方法調(diào)用創(chuàng)立更簡(jiǎn)單的接口,還可以減少客戶必須處理的對(duì)象數(shù)量。2. 外觀模式,當(dāng)不能采用生成子類的方法進(jìn)展擴(kuò)大時(shí),動(dòng)態(tài)地給一個(gè)對(duì)象添加一些額外的功能。3. F

7、aade模式為子系統(tǒng)中的一組接口提供的界面可能不一致。4. Faade外觀模式只能為方法調(diào)用創(chuàng)立更簡(jiǎn)單的接口,不能減少客戶必須處理的對(duì)象數(shù)量。 解答:1. 對(duì)2. 錯(cuò)3. 錯(cuò)4. 錯(cuò)四.名詞解釋1. Faade模式2. 接口3. 組合4. 耦合度解答:1. 模式定義了一個(gè)高層接口,這一接口使得這一子系統(tǒng)更加容易使用,為子系統(tǒng)中的一組接口提供一個(gè)一致的界面。2. 包含了一系列不被實(shí)現(xiàn)的方法,而把這些方法的實(shí)現(xiàn)交給繼承它的類。3.4.五.簡(jiǎn)答題1. Faade外觀模式解決問(wèn)題的方案是什么 若何實(shí)現(xiàn)2. 請(qǐng)簡(jiǎn)要說(shuō)明在一個(gè)復(fù)雜系統(tǒng)中應(yīng)用Faade外觀模式的優(yōu)點(diǎn)。3. Faade模式的意圖是什么4. 在

8、Facade模式中,客戶是若何使用子系統(tǒng)的解答:1. 外觀模式解決問(wèn)題的方案是:Faade向客戶展現(xiàn)使用現(xiàn)有系統(tǒng)的一個(gè)新的接口。若何實(shí)現(xiàn):定義一個(gè)或一組新的類來(lái)停工所需的接口。讓新的類使用現(xiàn)有的系統(tǒng)。2. 當(dāng)擁有一個(gè)復(fù)雜的系統(tǒng)時(shí),F(xiàn)aade外觀模式使我們只需要使用它的一局部功能。最終我們將得到一個(gè)更簡(jiǎn)單,更容易使用的或根據(jù)我們的需要定制的系統(tǒng)。3. 意圖是希望那個(gè)簡(jiǎn)化現(xiàn)有系統(tǒng)的使用方法,需要定義自己的接口。4.六.應(yīng)用題1. 請(qǐng)論述在一個(gè)系統(tǒng)中應(yīng)用Faade外觀模式的必要性,并給出一種解決方案。2. 請(qǐng)舉例說(shuō)明Facade模式和Adapter模式使用場(chǎng)景的差異,并說(shuō)明它們的解決方案及表現(xiàn)的特點(diǎn)

9、解答:1. Faade外觀模式不僅可以為方法調(diào)用創(chuàng)立更簡(jiǎn)單的接口,還可以減少客戶必須處理的對(duì)象數(shù)量。舉個(gè)例子。假設(shè)有一個(gè)Client對(duì)象,這個(gè)對(duì)象必須處理Database、Model、Element類的對(duì)象。Client必須首先通過(guò)Database對(duì)象翻開(kāi)數(shù)據(jù)庫(kù),以得到一個(gè)對(duì)Model對(duì)象的引用,然后再向Model對(duì)象請(qǐng)求一個(gè)Element對(duì)象,最后向Element對(duì)象查詢所需的信息。而如果能創(chuàng)立一個(gè)DatabaseFacade類,讓Client對(duì)象向它發(fā)出請(qǐng)求,那么上面的過(guò)程可能就會(huì)變得簡(jiǎn)單一些。2.第7章 Adapter(適配器)模式一.選擇1. Adapter適配器模式的意圖是 。A.

10、希望簡(jiǎn)化現(xiàn)有系統(tǒng)的使用方法。你需要定義自己的借口。B將一個(gè)無(wú)法控制的現(xiàn)有對(duì)象與一個(gè)特定借口相匹配。C. 將一組實(shí)現(xiàn)局部從另一組使用它們的對(duì)象中別離出來(lái)。D你需要為特定的客戶或情況提供特定系列的對(duì)象。2. 下面不屬于創(chuàng)立型模式的有。A抽象工廠模式 Abstract Factory B工廠方法模式Factory MethodC適配器模式 AdapterD單例模式Singleton3. 將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另一個(gè)接口。這句話是對(duì)以下哪種模式的描述。A. 策略模式StrategiesB橋接模式BridgeC適配器模式AdapterD單例模式Singleton4. 以下關(guān)于構(gòu)造型模式說(shuō)法不正確

11、的選項(xiàng)是 。 A構(gòu)造型模式可以在不破壞類封裝性的根基上,實(shí)現(xiàn)新的功能。B構(gòu)造型模式主要用于創(chuàng)立一組對(duì)象。C構(gòu)造型模式可以創(chuàng)立一組類的統(tǒng)一訪問(wèn)接口。D構(gòu)造型模式可以在不破壞類封裝性的根基上,使得類可以同不曾估計(jì)到的系統(tǒng)進(jìn)展交互。解答:1. B2. C3. C4. B二.填空1. 適配器模式,分為類的適配器和對(duì)象的適配器兩種實(shí)現(xiàn)。其中類的適配器采用的是繼承關(guān)系,而對(duì)象適配器采用的是 關(guān)系。2. Adapter模式有兩種類型有 :對(duì)象Adapter模式、。3. UML是一種用來(lái)創(chuàng)立的圖像語(yǔ)言。4. 模式使原本接口不兼容而不能一起工作的類可以一起工作。5. 適配器模式,分為類的適配器和對(duì)象的適配器兩種

12、實(shí)現(xiàn)。其中類的適配器采用的是 關(guān)系,而對(duì)象適配器采用的是組合聚類關(guān)系。解答:1. 組合聚合2. 類Adapter模式3. 程序模型4. Adapter適配器5. 繼承三.判斷1. 對(duì)象適配器模式是合成聚合復(fù)用原那么的典型應(yīng)用。2. Adapter模式使原本由于接口不兼容而不能一起工作的那些類可以一起工作。3. Faade模式和Adapter模式是一樣類型的包裝器。4. Adapter模式不是必須針對(duì)某個(gè)接口進(jìn)展設(shè)計(jì)。解答:1. 對(duì)2. 對(duì)3. 錯(cuò)4. 錯(cuò)四.名詞解釋1. Adapter模式2. 對(duì)象Adapter模式3. 類Adapter模式4. 多態(tài)解答:1. 將一個(gè)類的接口轉(zhuǎn)換成客戶希望的

13、另外一個(gè)接口。Adapter模式使原本由于接口不兼容而不能一起工作的那些類可以一起工作。2. 使用Adapter模式與適當(dāng)?shù)某橄箢愊嗥ヅ?,它通常依賴于一個(gè)對(duì)象適配對(duì)象包含另一個(gè)對(duì)象被適配對(duì)象。3. 當(dāng)實(shí)現(xiàn)Adapter模式的方法是使用多重繼承。在這種情況下,它被成為類Adapter模式。4. 相關(guān)的對(duì)象按照各自類型來(lái)實(shí)現(xiàn)方法的能力。五.簡(jiǎn)答題1. 給出Adapter模式的定義及意圖。2. Adapter模式的最常見(jiàn)的用法是什么該模式可以使你不用操心什么方面3. Adapter模式問(wèn)題的解決方案以及若何實(shí)現(xiàn)4. 請(qǐng)簡(jiǎn)要說(shuō)明在軟件設(shè)計(jì)中設(shè)計(jì)模式的作用解答:1. 意圖是將一個(gè)類的接口轉(zhuǎn)換成客戶希望的

14、另外一個(gè)接口。Adapter模式使原本由于接口不兼容而不能一起工作的那些類可以一起工作。2. Adapter模式最通常的用途就是保持多態(tài)。Adapter模式讓我們?cè)谶M(jìn)展設(shè)計(jì)時(shí)不必再擔(dān)憂現(xiàn)存類的接口問(wèn)題.3. 解決方案是Adapter模式用我們需要的接口對(duì)無(wú)法修改的類進(jìn)展包裝。實(shí)現(xiàn):將現(xiàn)存的類包含在另一個(gè)類之中。包容類與需要的接口相匹配,并調(diào)用被包容類的方法。4. 軟件設(shè)計(jì)模式Design Pattern是一套被反復(fù)使用、多數(shù)人知曉的、經(jīng)過(guò)分類編目的代碼設(shè)計(jì)經(jīng)歷的總結(jié)。使用設(shè)計(jì)模式是為了適應(yīng)需求變化、可重用代碼、讓代碼更容易被他人理解、保證代碼的可靠性。六.應(yīng)用題1. 根據(jù)你的理解,請(qǐng)分析Faa

15、de模式比Adapter模式的一樣點(diǎn)和不同點(diǎn),并說(shuō)明它們?cè)趯?shí)際應(yīng)用中的差異2. 請(qǐng)說(shuō)明什么是Adapter模式,Adapter模式有哪幾種形式?請(qǐng)舉例說(shuō)明?解答:1. 在兩個(gè)模式中,都擁有現(xiàn)存的類,但是在Faade模式中,無(wú)須針對(duì)某個(gè)接口進(jìn)展設(shè)計(jì);而在Adapter模式中那么必須針對(duì)某個(gè)特定接口進(jìn)展設(shè)計(jì)。在Faade模式中,動(dòng)機(jī)是簡(jiǎn)化接口,而在Adapter模式中,盡管也是越簡(jiǎn)單越好,目的是針對(duì)一個(gè)現(xiàn)有的接口進(jìn)展設(shè)計(jì),并不能簡(jiǎn)化任何東西,即使可能有另一個(gè)更簡(jiǎn)單的接口??傊?,在實(shí)際應(yīng)用中,F(xiàn)aade模式簡(jiǎn)化接口,而Adapter模式將接口轉(zhuǎn)換成另一個(gè)現(xiàn)有的接口。2.第8章 擴(kuò)展我們的視野一.選擇

16、解答:二.填空解答:三.判斷解答:四.名詞解釋解答:五.簡(jiǎn)答題解答:六.應(yīng)用題解答:第9章 Bridge(橋接)模式一.選擇1. 關(guān)于繼承表述錯(cuò)誤的選項(xiàng)是: 。A.繼承是一種通過(guò)擴(kuò)展一個(gè)已有對(duì)象的實(shí)現(xiàn),從而獲得新功能的復(fù)用方法。B.泛化類超類可以顯式地捕獲那些公共的屬性和方法。特殊類子類那么通過(guò)附加屬性和方法來(lái)進(jìn)展實(shí)現(xiàn)的擴(kuò)展。C.在一定意義上說(shuō)破壞了封裝性,因?yàn)檫@會(huì)將父類的實(shí)現(xiàn)細(xì)節(jié)暴露給子類。D.繼承本質(zhì)上是“白盒復(fù)用,對(duì)父類的修改,不會(huì)影響到子類。2. 在不破壞類封裝性的根基上,使得類可以同不曾估計(jì)到的系統(tǒng)進(jìn)展交互。主要表達(dá)在 。A外觀模式Facade B裝飾模式(Decorator)C策略

17、模式Strategies D橋接模式(Bridge)3. 行為類模式使用 在類間分派行為。A接口 B繼承機(jī)制 C對(duì)象組合 D委托4. 下面的類圖表示的是哪個(gè)設(shè)計(jì)模式 。A抽象工廠模式Abstract Factory B觀察者模式(Observer)C策略模式Strategies D橋接模式(Bridge)5. Bridge橋接模式的意圖是 。A. 希望簡(jiǎn)化現(xiàn)有系統(tǒng)的使用方法。你需要定義自己的借口。B將一個(gè)無(wú)法控制的現(xiàn)有對(duì)象與一個(gè)特定借口相匹配。C. 將一組實(shí)現(xiàn)局部從另一組使用它們的對(duì)象中別離出來(lái)。D你需要為特定的客戶或情況提供特定系列的對(duì)象。6. 按照四人團(tuán)的說(shuō)法,Bridge模式的意圖是(

18、)。A. 將抽象局部與它的實(shí)現(xiàn)局部別離,使它們可以獨(dú)立地變化.B. 將抽象局部與它的實(shí)現(xiàn)局部相別離,但它們不能獨(dú)立地變化.C. 將抽象局部與它的實(shí)現(xiàn)局部相結(jié)合,但它們可以獨(dú)立地變化.D. 將抽象局部與它的實(shí)現(xiàn)局部相結(jié)合,使它們相互依賴.7. 以下表達(dá)不對(duì)的是( )。A. ,Bridge模式是將抽象局部與它的實(shí)現(xiàn)局部別離,使它們可以獨(dú)立地變化.B. Bridge模式是發(fā)現(xiàn)并封裝不同點(diǎn)的極好例子.C. Bridge模式優(yōu)先使用繼承而不是組合.D. Bridge模式優(yōu)先使用組合而不是繼承.8. 以下表達(dá)不對(duì)的是( )。A. 學(xué)習(xí)設(shè)計(jì)模式告訴我們要盡可能使用繼承.B. 學(xué)習(xí)設(shè)計(jì)模式通??梢哉业奖葍H采用

19、面向?qū)ο蠓椒ǜ玫慕鉀Q方案.C. 學(xué)習(xí)設(shè)計(jì)模式告訴我們要盡可能使用組合.D. Bridge模式適用于一個(gè)抽象局部擁有不同的實(shí)現(xiàn)局部的情形9. 對(duì)Alexander的模式哲學(xué),以下表達(dá)正確的選項(xiàng)是( )。 A 學(xué)習(xí)設(shè)計(jì)模式,可以完全解決軟件開(kāi)發(fā)中的變化情況. B. 每個(gè)模式,可以無(wú)數(shù)次使用模式提供的解決方案,而不必再次重復(fù)同樣的工作方式. C. 設(shè)計(jì)模式總是可以為需求的變化提供更好的解決方案. D. 設(shè)計(jì)模式描述一個(gè)在開(kāi)發(fā)的軟件環(huán)境中不斷產(chǎn)生新的問(wèn)題時(shí),能提供很好的解決方案10. 根據(jù)Coplien關(guān)于共同點(diǎn)/變化點(diǎn)的說(shuō)法,下面哪個(gè)是正確的( )。 A. 共同點(diǎn)分析就是尋找一個(gè)不會(huì)隨時(shí)間變化的構(gòu)

20、造,而變化點(diǎn)分析就是捕捉變化的內(nèi)容. B. 共同點(diǎn)分析是尋找家族成員的一樣元素.C. 在一個(gè)系統(tǒng)中,共同點(diǎn)和不同點(diǎn)的關(guān)系是相對(duì)的,可以互相轉(zhuǎn)化.D. 共同點(diǎn)通常由父類實(shí)現(xiàn),而變化點(diǎn)通常由子類實(shí)現(xiàn).解答:1. D2. D3. B4. D5. C6. A7. C8. A9. B10. B二.填空1. 在存在繼承關(guān)系的情況下,方法向超類方向集中,而數(shù)據(jù)向 方向集中。2. 當(dāng)存在一個(gè)抽象有不同實(shí)現(xiàn)時(shí)Bridge模式最為有用,它可以使抽象和 相互獨(dú)立地進(jìn)行變化。3. 是通過(guò)多態(tài)使用具有派生類的抽象類實(shí)現(xiàn)的。4. 在進(jìn)展設(shè)計(jì)以應(yīng)對(duì)變化的過(guò)程中,應(yīng)該遵循兩條 根本策略:找出變化并 ;優(yōu)先使用對(duì)象組合,而不是

21、類繼承。5. C+中,必須用一個(gè)定義 的抽象類來(lái)實(shí)現(xiàn)Bridge模式的實(shí)現(xiàn)局部。6. 為了提高內(nèi)聚和( ),我們經(jīng)常會(huì)抽象出一些類的公共接口以形成抽象基類或者接口。7. 封裝性好的代碼更容易測(cè)試,因?yàn)樗c其他代碼沒(méi)有 。8. Bridge橋接模式是將抽象局部與它的實(shí)現(xiàn)局部別離,其中 是指用來(lái)實(shí)現(xiàn)抽象類的派生類的對(duì)象。9. 在進(jìn)展設(shè)計(jì)以應(yīng)對(duì)變化的過(guò)程中,應(yīng)該遵循兩條 根本策略:找出變化并封裝變化點(diǎn);優(yōu)先使用對(duì)象 ,而不是類繼承。10. 在進(jìn)展設(shè)計(jì)以應(yīng)對(duì)變化的過(guò)程中,應(yīng)該遵循兩條 根本策略:找出變化并封裝變化點(diǎn);優(yōu)先使用對(duì)象組合 ,而不是類 。解答:1. 子類2. 實(shí)現(xiàn)3. 類型的封裝4. 封裝變

22、化點(diǎn)5. 公共接口6. 松耦合7. 耦合8. 實(shí)現(xiàn)局部9. 組合10. 繼承三.判斷1. 為了提高內(nèi)聚和緊耦合,我們經(jīng)常會(huì)抽象出一些類的公共接口以形成抽象基類或者接口。2. 繼承本質(zhì)上是“白盒復(fù)用,對(duì)父類的修改,不會(huì)影響到子類。3. 繼承是一種通過(guò)擴(kuò)展一個(gè)已有對(duì)象的實(shí)現(xiàn),從而獲得新功能的復(fù)用方法。4. 即使在不知道若何實(shí)現(xiàn)Bridge橋接模式時(shí),你也可以判斷出在這種情況下這個(gè)模式是適用的。5. 在創(chuàng)立設(shè)計(jì)以處理變化的過(guò)程中,應(yīng)該優(yōu)先使用類繼承,而不是使用對(duì)象組合。6. 只有在共同點(diǎn)分析定義的上下文中,變化點(diǎn)才有意義。7. 變化點(diǎn)就是領(lǐng)域問(wèn)題的特殊情形,而共同點(diǎn)那么是指一般情形。8. Bridg

23、e模式就是為系統(tǒng)提供一種高內(nèi)聚,松耦合的解決方案。9. 當(dāng)需要增加系統(tǒng)的功能時(shí),應(yīng)當(dāng)采用Bridge模式。10. 封裝就是指數(shù)據(jù)隱藏。解答:1. 錯(cuò)2. 錯(cuò)3. 對(duì)4. 對(duì)5. 錯(cuò)6. 對(duì)7. 錯(cuò)8. 對(duì)9. 錯(cuò)10. 錯(cuò)四.名詞解釋1. 抽象2. 重構(gòu)3. 內(nèi)聚性4. 耦合性5. Bridge橋梁模式解答:1. 是指不同事物之間概念上的聯(lián)系方式。2. 修改代碼改良構(gòu)造但不增加新功能,就是所謂重構(gòu)。3. 指的是例程中操作之間聯(lián)系的嚴(yán)密程度。4. 指的是兩個(gè)例程之間聯(lián)系的嚴(yán)密程度。5. 將抽象化與實(shí)現(xiàn)化脫耦,使得二者可以獨(dú)立的變化就是說(shuō)將他們之間的強(qiáng)關(guān)聯(lián)變成弱關(guān)聯(lián),也就是指在一個(gè)軟件系統(tǒng)的抽象化

24、和實(shí)現(xiàn)化之間使用組合/聚合關(guān)系而不是繼承關(guān)系,從而使兩者可以獨(dú)立的變化。五.簡(jiǎn)答題1. Bridge模式要解決的 根本問(wèn)題是什么2. 給出Bridge模式的定義。采用Bridge模式的效果是什么3. 什么是“一條規(guī)那么,一個(gè)地方4. 在學(xué)習(xí)Bridge橋接模式的過(guò)程中,應(yīng)該遵循以下處理變化的 根本策略是什么5. Bridge橋接模式的解決方案是什么,以及若何實(shí)現(xiàn)解答:1. Bridge橋接模式適用于一個(gè)抽象局部擁有不同的實(shí)現(xiàn)局部的情況,它讓抽象局部和實(shí)現(xiàn)局部可以各自獨(dú)立的變化2. 將抽象化與實(shí)現(xiàn)化脫耦,使得二者可以獨(dú)立的變化,也就是說(shuō)將他們之間的強(qiáng)關(guān)聯(lián)變成弱關(guān)聯(lián),也就是指在一個(gè)軟件系統(tǒng)的抽象化

25、和實(shí)現(xiàn)化之間使用組合/聚合關(guān)系而不是繼承關(guān)系,從而使兩者可以獨(dú)立的變化。效果是:“實(shí)現(xiàn)局部與使用它的對(duì)象的別離增加了靈活性。客戶對(duì)象不需要了解實(shí)現(xiàn)問(wèn)題。3. 抽象類經(jīng)常讓自己的方法實(shí)際使用實(shí)現(xiàn)局部對(duì)象。抽象局部的派生類將調(diào)用這些方法。這樣如果需要修改,修改也會(huì)容易些,并且在實(shí)現(xiàn)整個(gè)模式之前讓你擁有一個(gè)好的起點(diǎn)。4. 找出變化并封裝變化點(diǎn);優(yōu)先使用對(duì)象組合,而不是類繼承。5. 解決的問(wèn)題是:為所以的實(shí)現(xiàn)局部定義一個(gè)接口,讓抽象類的所有派生類使用這個(gè)接口。實(shí)現(xiàn):將實(shí)現(xiàn)局部封裝在一個(gè)抽象類中。在被實(shí)現(xiàn)的抽象局部基類中包含一個(gè)實(shí)現(xiàn)局部基類的句柄。六.應(yīng)用題1. 根據(jù)你對(duì)Bridge 模式的理解,概要描

26、述使用該模式的應(yīng)用要求,并給出相應(yīng)的設(shè)計(jì)類圖。2. 舉例說(shuō)明使用Bridge 模式的場(chǎng)合,給出在該場(chǎng)合下使用Bridge 模式的解決方案,并說(shuō)明該解決方案的優(yōu)點(diǎn)。解答:1. 當(dāng)存在一個(gè)抽象有不同實(shí)現(xiàn)時(shí)Bridge模式最為有用,它可以使抽象和實(shí)現(xiàn)相互獨(dú)立地進(jìn)行變化。2. 打印驅(qū)動(dòng)程序是Bridge模式最典型的例子,也是最適合應(yīng)用Bridge模式的場(chǎng)合。Bridge模式的真正威力在于它能夠幫助我們看到什么時(shí)候應(yīng)該從問(wèn)題域中提取實(shí)現(xiàn)。也就是說(shuō),有時(shí)候有一個(gè)實(shí)體X使用系統(tǒng)S,一個(gè)實(shí)體Y使用系統(tǒng)T。我們可能認(rèn)為X總是與S相伴,而Y總是與T相伴,因此就將它們聯(lián)系耦合起來(lái)。Bridge模式提醒我們,可以抽象

27、出S和T,這樣更好,也就是說(shuō),Bridge模式最有用的地方,是在解耦抽象與實(shí)現(xiàn)之前考慮Bridge模式是否適用。第10章 Abstract Factory(抽象工廠)模式一.選擇1. 靜態(tài)工廠的核心角色是。A.抽象產(chǎn)品B.具體產(chǎn)品C.靜態(tài)工廠D.消費(fèi)者2. 以下屬于創(chuàng)立型模式的是。A抽象工廠模式Abstract Factory B 裝飾模式(Decorator)C外觀模式(Facade) D橋接模式(Bridge)3. 下面的類圖表示的是哪個(gè)設(shè)計(jì)模式。A抽象工廠模式 B觀察者模式C 策略模式 D橋接模式4. Abstract Factory抽象工廠模式的意圖是。A. 希望簡(jiǎn)化現(xiàn)有系統(tǒng)的使用方法

28、。你需要定義自己的借口。B將一個(gè)無(wú)法控制的現(xiàn)有對(duì)象與一個(gè)特定借口相匹配。C. 將一組實(shí)現(xiàn)局部從另一組使用它們的對(duì)象中別離出來(lái)。D提供一個(gè)創(chuàng)立一系列相關(guān)或相互依賴對(duì)象的接口,而無(wú)需指定它們具體的類5. 在根據(jù)不同的機(jī)器選擇設(shè)備驅(qū)動(dòng)程序的案例中,以下表達(dá)不準(zhǔn)確的是()。A. 可以使用switch語(yǔ)句選擇驅(qū)動(dòng)程序.B. 可以使用繼承來(lái)實(shí)現(xiàn)選擇驅(qū)動(dòng)程序,但它可能會(huì)產(chǎn)生類組合爆炸問(wèn)題.C. 可以選擇抽象工廠模式實(shí)現(xiàn),且能防止組合爆炸問(wèn)題.D. 使用繼承的解決方案要比switch語(yǔ)句有更多的優(yōu)勢(shì).6. 以下有關(guān)Abstract Factory抽象工廠模式正確的選項(xiàng)是( )。A Abstract Facto

29、ry的實(shí)例化方法就是具體工廠方法.B. Abstract Factory類和具體工廠方法可以別離,每個(gè)具體工廠負(fù)責(zé)一個(gè)抽象工廠方法接口的實(shí)現(xiàn).C. 由于Abstract Factory類和具體工廠方法可以別離,因此在實(shí)現(xiàn)時(shí)會(huì)產(chǎn)生更多的類.D. 當(dāng)問(wèn)題存在一樣的對(duì)象用于解決不同的情形時(shí),應(yīng)該使用抽象工廠模式.7. 根據(jù)?設(shè)計(jì)模式?,有關(guān)抽象工廠模式的定義,準(zhǔn)確的說(shuō)法是 。A 工廠方法是一個(gè)抽象類的派生類實(shí)現(xiàn)的。B 要?jiǎng)?chuàng)造的東西本身是抽象定義的,工廠方法可以靈活實(shí)現(xiàn)。C.抽象工廠只關(guān)注概念,而具體工廠創(chuàng)立抽象工廠。D 抽象工廠派生出具體工廠對(duì)象和實(shí)現(xiàn)方法。8. 關(guān)于抽象工廠模式,以下表達(dá)不正確的選

30、項(xiàng)是 A 客戶對(duì)象不需要知道向誰(shuí)請(qǐng)求所需的對(duì)象和若何使用這些對(duì)象。B 抽象工廠類通過(guò)為每個(gè)不同類型的對(duì)象定義一個(gè)方法,來(lái)指定實(shí)例化哪個(gè)對(duì)象。C 具體工廠對(duì)象負(fù)責(zé)指定哪些對(duì)象要實(shí)例化。D 將抽象工廠模式和適配器模式結(jié)合在一起,可以將概念相似的對(duì)象當(dāng)作同種對(duì)象處理。9. 關(guān)于抽象工廠模式 Abstract Factory , 以下表達(dá)正確的選項(xiàng)是 。A 抽象工廠相對(duì)具體工廠而言,可以理解為抽象工廠是抽象類,而具體工廠是對(duì)抽象工廠的繼承,是抽象工廠的子類。B 抽象工廠類不能實(shí)例化,具體工廠可以實(shí)例化。C 抽象工廠定義接口,具體工廠實(shí)現(xiàn)某一接口。D 抽象工廠模式將使用哪些對(duì)象的規(guī)那么與若何使用這些對(duì)象

31、的邏輯有效地結(jié)合起來(lái)。10. 下面屬于創(chuàng)立型模式的有 。A抽象工廠 Abstract Factory 模式B外觀Facade模式C適配器Adapter模式D橋接Bridge模式解答:1. A2. A3. A4. D5. D6. B7. B8. A9. C10. A二.填空1. 模式提供了一系列相關(guān)或相互依賴對(duì)象的接口而無(wú)需指定他們具體的類。2. 工廠模式分為簡(jiǎn)單工廠,工廠方法,( )三種類型。3. Abstract Factory模式就是用來(lái)解決這類問(wèn)題的:要?jiǎng)?chuàng)立一組相關(guān)或者的對(duì)象。4. Abstract Factory模式強(qiáng)調(diào)的是為創(chuàng)立多個(gè)相互依賴的對(duì)象提供一個(gè)。5. 我們可以使用模式,不同

32、應(yīng)用程序都使用同一子系統(tǒng)。6. Abstract Factory意圖提供一個(gè)創(chuàng)立一系列相關(guān)或相互依賴對(duì)象的接口,而無(wú)需指定它們。7. 當(dāng)一個(gè)系統(tǒng)要 于它的產(chǎn)品的創(chuàng)立、組合和表示時(shí)適合用Abstract Factory模式。8. Abstract Factory模式為若何創(chuàng)立對(duì)象組的每個(gè)成員定義 。9. 抽象工廠模式是定義一個(gè) ,然后為每個(gè)組實(shí)現(xiàn)一個(gè)具體類。10. Abstract Factory模式將若何執(zhí)行對(duì)象 規(guī)那么從使用這些對(duì)象的客戶對(duì)象提取出來(lái)。解答:1. 抽象工廠2. 工廠方法3. 相互依賴4. 同一的接口5. 抽象工廠6. 具體的類7. 獨(dú)立8. 接口9. 抽象類10. 實(shí)例化三.

33、判斷1. 抽象工廠模式提供了一系列相關(guān)或相互依賴對(duì)象的接口且必須指定他們具體的類。2. Abstract Factory抽象工廠模式確保系統(tǒng)總能根據(jù)當(dāng)前的情況獲得適宜的對(duì)象。3. 在Abstract Factory抽象工廠模式中,客戶對(duì)象不需要知道“向誰(shuí)請(qǐng)求需要的對(duì)象“若何使用這些對(duì)象。4. 典型情況下,一個(gè)Abstract Factory對(duì)象將針對(duì)每種必須實(shí)例化的對(duì)象擁有一個(gè)方法。5. 決定需要哪個(gè)工廠對(duì)象,實(shí)際上是判斷需要那個(gè)系列的對(duì)象。6. 從本質(zhì)上看,switch語(yǔ)句可以到達(dá)和抽象工廠一樣的效果。7. 抽象工廠模式簡(jiǎn)化了設(shè)計(jì)過(guò)程。8. 一個(gè)抽象工廠對(duì)象總是要和一個(gè)具體工廠方法對(duì)象相結(jié)合

34、。9. 抽象工廠模式告訴我們,要針對(duì)接口而不是實(shí)現(xiàn)進(jìn)展設(shè)計(jì)。10. 使用抽象工廠方法與優(yōu)先使用組合是相矛盾的。解答:1. 錯(cuò)2. 對(duì)3. 錯(cuò)4. 對(duì)5. 對(duì)6. 錯(cuò)7. 錯(cuò)8. 錯(cuò)9. 對(duì)10. 錯(cuò)四.名詞解釋1. Abstract Factory抽象工廠模式2. 組合爆炸3. 封裝4. 抽象類5. 具體類解答:1. 就是用來(lái)解決這類問(wèn)題的:要?jiǎng)?chuàng)立一組相關(guān)或者相互依賴的對(duì)象。2. 隨著問(wèn)題中元素的增加,所出現(xiàn)的可能組合數(shù)劇烈增加,形象的說(shuō)法就是組合爆炸。3. 任何形式的隱藏。對(duì)象對(duì)它們的數(shù)據(jù)進(jìn)展封裝。抽象類對(duì)它們派生出的具體類進(jìn)展封裝。4. 為一組概念上相似的類定義方法和公共屬性。抽象類絕對(duì)不

35、能被實(shí)例化。5. 是能被直接實(shí)例化的類、用例、信號(hào)、其他類元或其他泛化元素,它也可以用來(lái)描述實(shí)現(xiàn)的操作。五.簡(jiǎn)答題1. Abstract Factory的三個(gè)關(guān)鍵策略是什么2. 采用Abstract Factory模式的效果是什么3. 為什么這個(gè)模式被稱為“Abstract Factory4. 若何獲得正確的工廠對(duì)象5. 在Abstract Factory抽象工廠模式中對(duì)象的角色是什么解答:1. 發(fā)現(xiàn)并封裝變化點(diǎn);優(yōu)先使用對(duì)象組合,而不是類繼承;針對(duì)接口設(shè)計(jì),而不是針對(duì)實(shí)現(xiàn)設(shè)計(jì)。2. 效果:這個(gè)模式將“使用哪些對(duì)象的規(guī)那么與“若何使用這些對(duì)象“的邏輯相隔離。3. 這個(gè)模式之所以稱為Abstra

36、ct Factory,是因?yàn)樗獎(jiǎng)?chuàng)立的東西本身是由抽象定義的。工廠各種變化的實(shí)現(xiàn)若何選擇,模式并沒(méi)有具體規(guī)定。4. 決定需要哪個(gè)工廠對(duì)象實(shí)際上是判斷需要哪個(gè)系列的對(duì)象。若何知道自己需要哪個(gè)系列呢在類似的案例中,最可能的是由一個(gè)配置文件來(lái)告訴我們。然后就可以寫幾行代碼,根據(jù)這些配置信息來(lái)將適宜的工廠對(duì)象實(shí)例化。5. 客戶對(duì)象只知道“向誰(shuí)請(qǐng)求需要的對(duì)象和“若何使用這些對(duì)象。Abstract Factory類通過(guò)“為每種不同類型的對(duì)象定義一個(gè)方法來(lái)指定哪些對(duì)象可以被實(shí)例化。典型情況下,一個(gè)Abstract Factor對(duì)象將針對(duì)每種必須實(shí)例化的對(duì)象擁有一個(gè)方法。具體工廠指定哪些對(duì)象將被實(shí)例化。六.應(yīng)

37、用題1. 請(qǐng)結(jié)合抽象工廠模式,說(shuō)明在實(shí)際應(yīng)用中若何生成正確的對(duì)象。2. 在抽象工廠模式中?有哪兩種工廠?它們的作用什么?使用抽象工廠模式有什么優(yōu)點(diǎn)?解答:1. 決定需要哪個(gè)工廠對(duì)象實(shí)際上與確定使用哪一組對(duì)象是一樣的。例如,在驅(qū)動(dòng)程序問(wèn)題中,有一組低分辨率驅(qū)動(dòng)程序和一組高分辨率驅(qū)動(dòng)程序,若何才能知道自己需要哪一組呢 在類似這樣的例子中,很可能通過(guò)一個(gè)配置文件獲知這一信息。然后可以編寫幾行代碼,根據(jù)配置信息將適宜的工廠對(duì)象實(shí)例化。還可以使用Abstract Factory模式,不同應(yīng)用程序都使用同一子系統(tǒng)。在這種情況下,工廠對(duì)象將傳給子系統(tǒng),告訴子系統(tǒng)將要使用哪些對(duì)象,此時(shí),通常主系統(tǒng)知道子系統(tǒng)需

38、要那一組對(duì)象,在調(diào)用子系統(tǒng)之前,將實(shí)例化正確的工廠對(duì)象。2.第11章 專家若何進(jìn)展設(shè)計(jì)一.選擇解答:二.填空解答:三.判斷解答:四.名詞解釋解答:五.簡(jiǎn)答題解答:六.應(yīng)用題解答:第12章 用模式解決CAD/CAM問(wèn)題 一.選擇1. 應(yīng)用設(shè)計(jì)模式的一個(gè)優(yōu)點(diǎn)是 。A適應(yīng)需求變化 B.程序易于理解C減少開(kāi)發(fā)過(guò)程中的代碼開(kāi)發(fā)工作量 D.簡(jiǎn)化軟件系統(tǒng)的設(shè)計(jì)2. 當(dāng)我們想創(chuàng)立一個(gè)具體的對(duì)象而又不希望指定具體的類時(shí),可以使用 模式。A.創(chuàng)立型 B.構(gòu)造型 C行為型 D.以上都可以3. 實(shí)現(xiàn)局部各不一樣,但都可以通過(guò)一個(gè)通用接口被訪問(wèn)是 模式中的包容變化。 A.Bridge B.Abstract Factor

39、y C.Adapter D.Facade4. 以下哪一條是Alexander的場(chǎng)景原那么:。A 在對(duì)象實(shí)例化之前,要考慮它的實(shí)例化。B 當(dāng)你有一個(gè)涉及創(chuàng)立對(duì)象的設(shè)計(jì)模式時(shí),對(duì)象應(yīng)為模式提供場(chǎng)景。C 模式的選取與場(chǎng)景無(wú)關(guān)。D 在一個(gè)系統(tǒng)中,由于模式之間的作用是相互的,不存在最高級(jí)別的模式。5. 最高級(jí)別的模式約束其他的模式的不正確的表達(dá)是。A 最高級(jí)別的模式?jīng)Q定其它模式的作用。B 最高級(jí)別的模式是最重要的,其他的模式是次要的。C 最高級(jí)別的模式為其它模式提供場(chǎng)景。D 最高級(jí)別的模式也可稱為場(chǎng)景確定模式。解答:1. A2. A3. A4. B5. B二.填空1. 設(shè)計(jì)模式的思想根源是( ) 根本原

40、那么的宏觀運(yùn)用,本質(zhì)上是沒(méi)有任何模式的,發(fā)現(xiàn)模式的人永遠(yuǎn)是大師,而死守模式的人,最多只能是一個(gè)工匠。2. 模式不僅僅是包容變化,它們還是變化之間的 。3. 系統(tǒng)中為其他模式確定場(chǎng)景的一個(gè)或兩個(gè)模式,這個(gè)模式將對(duì)其他模式能做的事進(jìn)展 。4. 通常情況下,當(dāng)一個(gè)模式使用另一個(gè)模式時(shí),看起來(lái)被使用模式是在使用模式的 之中的。5. 系統(tǒng)中的一個(gè)模式經(jīng)常通過(guò)為系統(tǒng)中的其他模式提供 與其他模式相關(guān)聯(lián)。解答:1. 開(kāi)閉2. 關(guān)聯(lián)3. 約束4. 場(chǎng)景5. 場(chǎng)景三.判斷1. 識(shí)別可能性不等于必須跟著可能性走。2. 認(rèn)為一個(gè)實(shí)際不會(huì)出現(xiàn)的模式出現(xiàn)會(huì)起反作用。3. 對(duì)象適配器模式是依賴倒轉(zhuǎn)原那么的典型應(yīng)用。4. 通

41、過(guò)在問(wèn)題領(lǐng)域中使用模式,可以用一種不同的方式來(lái)對(duì)待問(wèn)題。5. 當(dāng)有一個(gè)涉及創(chuàng)立對(duì)象的設(shè)計(jì)模式時(shí),這些對(duì)象為這個(gè)模式提供場(chǎng)景。解答:1. 對(duì)2. 錯(cuò)3. 錯(cuò)4. 對(duì)5. 對(duì)四.名詞解釋1. 場(chǎng)景2. CVA3. 場(chǎng)景原那么4. 公開(kāi)接口5. 多態(tài)解答:1. 一些事物存在或發(fā)生的相互關(guān)聯(lián)的狀態(tài)。2. 共同點(diǎn)/變化點(diǎn)分析3. 當(dāng)有一個(gè)涉及創(chuàng)立對(duì)象的設(shè)計(jì)模式時(shí),這些對(duì)象為這個(gè)模式提供場(chǎng)景。4.5.五.簡(jiǎn)答題1. 考慮場(chǎng)景時(shí)使用的一條原那么是什么2. 用模式的方法思考的步驟是什么3. 場(chǎng)景和被使用模式之間有什么關(guān)聯(lián)4. 什么是“最高模式5. 為一個(gè)龐大的工程的CAD/CAM系統(tǒng)提供支持的 根本需求是什么

42、解答:1. 原那么是:考慮在系統(tǒng)中需要什么,然后再關(guān)心若何實(shí)現(xiàn)它。這也符合Alexander的場(chǎng)景原那么:當(dāng)有一個(gè)涉及創(chuàng)立對(duì)象的設(shè)計(jì)模式時(shí),這些對(duì)象為這個(gè)模式提供場(chǎng)景。2. 發(fā)現(xiàn)在問(wèn)題領(lǐng)域中擁有的模式,這些是需要分析的模式;對(duì)于這些需要分析的模式,做以下工作:a.挑出為其他模式提供最多場(chǎng)景的模式。b. 在我的概念性最高的設(shè)計(jì)中使用這個(gè)模式。c.識(shí)別任何可能已經(jīng)出現(xiàn)的附加模式。將它們添加到“需要分析的模式中。d.對(duì)于需要分析而還未分析的模式,重復(fù)上述過(guò)程; 按照需要將細(xì)節(jié)添加到設(shè)計(jì)中。擴(kuò)展方法和類定義。3. 通常情況下,當(dāng)一個(gè)模式使用另一個(gè)模式時(shí),看起來(lái)被使用模式是在使用模式的場(chǎng)景之中的。這條規(guī)

43、那么也可能有例外,但是看起在大多數(shù)時(shí)候它都是有效的。4. 所謂“最高模式是指系統(tǒng)中為其他模式建設(shè)背景的一兩個(gè)模式。這個(gè)模式將約束其他模式的行為。5. 創(chuàng)立一個(gè)計(jì)算機(jī)程序,它能讀取一個(gè)CAD/CAM數(shù)據(jù)集并從中提取部件,一個(gè)現(xiàn)有的專家系統(tǒng)需要這些部件才能進(jìn)展智能設(shè)計(jì)。這個(gè)系統(tǒng)應(yīng)該向CAD/CAM系統(tǒng)屏蔽專家系統(tǒng)。復(fù)雜的是CAD/CAM系統(tǒng)正處于變化之中??赡苡蠧AD/CAM系統(tǒng)的多個(gè)潛在版本存在,而專家系統(tǒng)需要擁有它們的接口。六.應(yīng)用題1. 在CAD/CAM問(wèn)題中,Abstract Factory模式被排除在“最高模式之外,請(qǐng)舉例說(shuō)明為什么解答:1. 使用Abstract Factory模式的

44、根本理由在于:如果有一個(gè)V1系統(tǒng)或者V2系統(tǒng),需要確保所有的實(shí)現(xiàn)對(duì)象都是V1類型或者V2類型的,但是Model對(duì)象本身已經(jīng)知道這一點(diǎn)。如果其他對(duì)象可以很容易地封裝創(chuàng)立規(guī)那么,就沒(méi)有必要再實(shí)現(xiàn)一個(gè)模式。之所以將Abstract Factory模式保存在模式集合中,是因?yàn)榈谝淮谓鉀Q這個(gè)問(wèn)題時(shí),存在Abstract Factory模式。這也說(shuō)明了,認(rèn)為存在一個(gè)其實(shí)并不存在的模式,未必會(huì)有什么副作用。第13章 設(shè)計(jì)模式的原那么和策略一.選擇1. Open-Close原那么的含義是一個(gè)軟件實(shí)體( )。A.應(yīng)當(dāng)對(duì)擴(kuò)展開(kāi)放,對(duì)修改關(guān)閉.B.應(yīng)當(dāng)對(duì)修改開(kāi)放,對(duì)擴(kuò)展關(guān)閉C.應(yīng)當(dāng)對(duì)繼承開(kāi)放,對(duì)修改關(guān)閉D.以上都不

45、對(duì)2. 典型情況下, 模式不包容變化。 A.Bridge B.Abstract Factory C.Adapter D.Facade3. 以下屬于設(shè)計(jì)模式 根本原那么的是( )。A.繼承 B.封裝 C.開(kāi)放-封閉 D都不是4. 常用的設(shè)計(jì)模式可分為。A創(chuàng)立型、構(gòu)造型和行為型 B對(duì)象型、構(gòu)造型和行為型過(guò)程型、創(chuàng)立型和構(gòu)造型抽象型、接口型和實(shí)現(xiàn)型5. 以下哪一條不屬于設(shè)計(jì)模式的 根本原那么。A 開(kāi)放-封閉原那么。 B 根據(jù)場(chǎng)景進(jìn)展設(shè)計(jì)的原那么。C 優(yōu)先使用繼承的原那么。 D 包容變化的原那么。解答:1. A2. D3. C4. A5. C二.填空1. 設(shè)計(jì)模式 根本原那么包括:開(kāi)閉原那么, ,包容

46、變化原那么。2. 最 根本的UML圖是 。它不僅描述了類,而且說(shuō)明了類之間的關(guān)系。3. 模塊,方法和類應(yīng)該對(duì)擴(kuò)展是開(kāi)放的,而對(duì)更改是 的。4. Alexander告訴我們要從 進(jìn)展設(shè)計(jì),在設(shè)計(jì)我們的片段出現(xiàn)的細(xì)節(jié)之前先創(chuàng)立整體視圖 。5. Bridge模式不僅僅對(duì)抽象局部和實(shí)現(xiàn)局部的變化進(jìn)展定義和包容,而且還定義了兩個(gè)變化之間的 。解答:1. 從場(chǎng)景進(jìn)展設(shè)計(jì)原那么2. 類圖3. 封閉4. 場(chǎng)景5. 關(guān)聯(lián)三.判斷1. 抽象不應(yīng)該依賴于細(xì)節(jié),細(xì)節(jié)應(yīng)當(dāng)依賴于抽象。2. 大多數(shù)設(shè)計(jì)模式還讓軟件更具有可修改性。3. Open-Close原那么的含義是一個(gè)軟件實(shí)體應(yīng)當(dāng)對(duì)擴(kuò)展開(kāi)放,對(duì)修改關(guān)閉。4. 常用的設(shè)

47、計(jì)模式可分為過(guò)程型、創(chuàng)立型和構(gòu)造型。5. Adapter模式和Faade模式總是在別的什么東西創(chuàng)造的場(chǎng)景中被定義。解答:1. 錯(cuò)2. 對(duì)3. 對(duì)4. 錯(cuò)5. 錯(cuò)四.名詞解釋1. 開(kāi)放-封閉原那么2. 超類3. 屬性4. 成員5. 方法解答:1. 模塊,方法和類應(yīng)該對(duì)擴(kuò)展是開(kāi)放的,而對(duì)更改是封閉的。2. 一個(gè)類,其他的類派生自它,包含主要屬性的定義,以及所有派生類都將使用并且可能重載的方法的定義。3. 與一個(gè)對(duì)象相關(guān)聯(lián)的數(shù)據(jù)4. 類的數(shù)據(jù)和方法5. 與對(duì)象相關(guān)聯(lián)的函數(shù)五.簡(jiǎn)答題1. 什么是開(kāi)-閉原那么2. 哪些因素決定了用哪種方案來(lái)實(shí)現(xiàn)Abstract Factory模式3. 按照模式進(jìn)展設(shè)計(jì)的

48、策略是什么4. 請(qǐng)舉例說(shuō)明若何根據(jù)模式為其他的模式創(chuàng)造場(chǎng)景來(lái)選擇模式。5. 為什么說(shuō)Bridge是包容變化原那么的一個(gè)精彩的范例解答:1. 這條原那么的意思是:模塊,方法和類應(yīng)該對(duì)擴(kuò)展是開(kāi)放的,而對(duì)更改是封閉的。換句話說(shuō),我們必須將我們的軟件設(shè)計(jì)成這樣:我們可以在不修改代碼的前提下對(duì)我們的軟件進(jìn)展擴(kuò)展。2. 未來(lái)變化的可能性;“不修改當(dāng)前系統(tǒng)的重要性;誰(shuí)來(lái)控制將被創(chuàng)立的對(duì)象系列是我們還是其他的開(kāi)發(fā)組;使用的編程語(yǔ)言;數(shù)據(jù)庫(kù)或配置文件的可用性。3. 1.開(kāi)放-封閉的原那么 2.從場(chǎng)景進(jìn)展設(shè)計(jì) 3. 在類中包容變化。4. 比方,Bridge-Facade關(guān)聯(lián),使用Facade模式來(lái)簡(jiǎn)化V1系統(tǒng)的接

49、口,Bridge模式的實(shí)現(xiàn)部分之一使用Facade模式所創(chuàng)立的新接口。因此,Bridge模式為Facade模式創(chuàng)造了場(chǎng)景。5. Bridge模式中的實(shí)現(xiàn)局部各不一樣,但都可以通過(guò)一個(gè)通用接口被訪問(wèn)。系統(tǒng)可以接納新的實(shí)現(xiàn)局部,只要它也使用這個(gè)通用接口來(lái)實(shí)現(xiàn)。六.應(yīng)用題1. 在本書的應(yīng)用案例中,為什么認(rèn)為Bridge模式高于Adapter模式 請(qǐng)舉例說(shuō)明。2. 設(shè)計(jì)模式應(yīng)遵循的原那么有哪些?請(qǐng)舉例分別對(duì)它們進(jìn)展解釋?解答:1. Bridge模式的應(yīng)用情景是在概念的抽象有變化及其實(shí)現(xiàn)方式有多個(gè)。而Adapter模式的應(yīng)用情景是原有對(duì)象的接口和需要的接口有差異。而大多數(shù)情景下Bridge模式是作為Ad

50、apter模式的背景。也就是Bridge是Adapter的“最高模式,在用Bridge模式封裝實(shí)現(xiàn)時(shí),大多數(shù)的實(shí)現(xiàn)并不可以派生自一樣的基類,這時(shí)Adapter模式就可以派上用場(chǎng)了。2.第14章 Strategy(策略)模式一.選擇1. 下面的類圖表示的是哪個(gè)設(shè)計(jì)模式 A裝飾模式Decorator B策略模式StrategyC橋接模式Bridge D觀察者模式Observer2. 定義一系列的算法,把它們一個(gè)個(gè)封裝起來(lái),并且使它們可相互替換。這句話是對(duì)哪種模式的描述 。A觀察者模式Observer B橋接模式BridgeC適配器模式Adapter D策略模式Strategy3. 下面屬于行為模式

51、的是 。A抽象工廠模式 Abstract Factory B適配器模式 AdapterC.策略模式Strategy D外觀模式Faade4. 策略模式針對(duì)一組算法,將每一個(gè)算法封裝到具有 接口的獨(dú)立的類中,從而使得它們可以相互替換。A不同 B.一樣 C共同 D都不是5. Strategy策略模式的意圖是: 。 A.定義一系列的算法,把它們一個(gè)個(gè)的封裝起來(lái),并且使它們可相互替換。 B.為一個(gè)對(duì)象動(dòng)態(tài)連接附加的職責(zé)。 C.你希望只擁有一個(gè)對(duì)象,但不用全局對(duì)象來(lái)控制對(duì)象的實(shí)例化。 D.在對(duì)象之間定義一種一對(duì)多的依賴關(guān)系,這樣當(dāng)一個(gè)對(duì)象的狀態(tài)改變時(shí),所有依賴于它的對(duì)象都將得到通知并自動(dòng)更新。6. 作者

52、在書中稱“分析癱瘓為。 A 因?yàn)閱?wèn)題的復(fù)雜性導(dǎo)致分析失敗。B 因?yàn)閱?wèn)題的復(fù)雜性導(dǎo)致分析無(wú)法繼續(xù)進(jìn)展。 C 過(guò)度分析或過(guò)度設(shè)計(jì)。 D 錯(cuò)誤分析引起的后果。7. 作者在?設(shè)計(jì)模式?中考慮變化的設(shè)計(jì)方式應(yīng)遵循的原那么中,哪一條是錯(cuò)誤的。 A 針對(duì)接口進(jìn)展編程,而不是針對(duì)實(shí)現(xiàn)編程。 B 優(yōu)先使用對(duì)象組合,而不是繼承。 C 對(duì)需求中可能變化的局部,應(yīng)重新設(shè)計(jì)。 D 在不引起重新設(shè)計(jì)的前提下,對(duì)變化的概念進(jìn)展封裝。8. 以下表達(dá)不正確的選項(xiàng)是。 A switch語(yǔ)句可能導(dǎo)致“分支蔓延。 B C+中的函數(shù)指針和C#中的委托都可以用來(lái)將代碼隱藏在精巧、緊湊、內(nèi)聚的函數(shù)中。 C 使用繼承可以實(shí)現(xiàn)復(fù)用。D 作者認(rèn)

53、為復(fù)用是程序開(kāi)發(fā)中最重要的考慮因素。9. 對(duì)繼承層次太深可能導(dǎo)致的問(wèn)題的表達(dá)不正確的選項(xiàng)是。 A 繼承層次太深導(dǎo)致緊內(nèi)聚。 B 繼承層次太深導(dǎo)致弱內(nèi)聚。 C繼承層次太深導(dǎo)致緊耦合。 D 繼承層次太深會(huì)產(chǎn)生冗余,并使測(cè)試?yán)щy。10. Strategy模式應(yīng)遵循的原那么中不正確的選項(xiàng)是。 A 對(duì)象都具有職責(zé)。 B 職責(zé)不同的具體實(shí)現(xiàn)是通過(guò)多態(tài)的使用完成的。 C 概念上一樣的算法具有多個(gè)不同的實(shí)現(xiàn),需要進(jìn)展管理。 D 優(yōu)先使用組合而不是繼承。解答:1. B2. D3. C4. C5. A6. C7. C8. D9. A10. D二.填空1. 模式是一種定義一系列算法的方法。2. UML是一種用來(lái)創(chuàng)立

54、 的圖像語(yǔ)言。3. 最 根本的UML圖是類圖 。它不僅 了類,而且說(shuō)明了類之間的關(guān)系。4. Strategy模式還簡(jiǎn)化了單元測(cè)試,因?yàn)槊總€(gè)算法都有自己的類,可以通過(guò)自己的 單獨(dú)測(cè)試。5. Strategy意圖是定義一系列的算法,把它們一個(gè)個(gè)( )起來(lái), 并且使它們可相互替換。6. Strategy模式要求所 的算法應(yīng)處在使用它們的類之外。7. 通過(guò)從一個(gè)抽象類 執(zhí)行算法的所有不同方式,主模塊無(wú)需再操心實(shí)際使用的是哪一個(gè)算法。8. 在Strategy模式的使用中,將某個(gè) 從使用它的類中移出來(lái),這種過(guò)程與數(shù)據(jù)庫(kù)中的標(biāo)準(zhǔn)化過(guò)程非常相似。9. 將 封裝在一個(gè)抽象類中。而且在某一時(shí)刻能夠互換地使用其中之

55、一的方法,這就是Strategy模式的本質(zhì)。10. Strategy模式是一種定義 算法的方法。解答:1. Strategy2. 程序模型3. 描述4. 接口5. 封裝6. 封裝7. 派生8. 變化的行為9. 算法10. 一系列三.判斷1. Strategy模式使得算法可獨(dú)立于使用它的客戶而變化。2. 從Strategy模式的概念上來(lái)說(shuō),所有算法都做一樣的工作,且擁有一樣的實(shí)現(xiàn)。3. Strategy策略模式是一種定義算法家族的方法。4. Strategy策略模式讓我們可以將這些規(guī)那么封裝在一個(gè)抽象類中,然后擁有一系列的抽象派生類。5. Strategy策略模式的本質(zhì)是在一個(gè)抽象類中封裝一個(gè)算

56、法并交替使用這些算法。6. 在設(shè)計(jì)模式設(shè)計(jì)中,作者提倡對(duì)變化進(jìn)展封裝在一個(gè)類中,再通過(guò)對(duì)它進(jìn)展繼承的原那么。7. 當(dāng)使用不同的規(guī)那么處理算法,就可以采用Strategy模式。8. Strategy模式可以用不同的方式調(diào)用所有的算法。9. Strategy模式簡(jiǎn)化了單元測(cè)試,因?yàn)槊總€(gè)算法都有自己的類,可以通過(guò)接口進(jìn)展單獨(dú)測(cè)試。10. 在算法設(shè)計(jì)時(shí),采用Strategy模式會(huì)增加大量的類。解答:1. 對(duì)2. 錯(cuò)3. 對(duì)4. 錯(cuò)5. 對(duì)6. 錯(cuò)7. 錯(cuò)8. 錯(cuò)9. 對(duì)10. 對(duì)四.名詞解釋1. Strategy策略模式2. 解耦3. 聚集4. 構(gòu)造函數(shù)解答:1. 定義一系列的算法,把它們一個(gè)個(gè)封裝起

57、來(lái),并且使它們可相互替換。這個(gè)模式使算法可獨(dú)立于使用它的客戶而變化。2. 解耦在軟件里就是要讓兩個(gè)對(duì)象之間保持松耦合的關(guān)系,這種關(guān)系應(yīng)具有穩(wěn)定、標(biāo)準(zhǔn)等特性,其作用是限制了對(duì)象修改所影響的范圍。3. 聚集表示類之間的關(guān)系是整體與局部的關(guān)系。4.五.簡(jiǎn)答題1. Strategy模式的意圖是什么嗎它有哪些效果2. Strategy策略模式是建設(shè)在哪些原那么的根基上3. Strategy策略模式對(duì)問(wèn)題的解決方案是什么以及若何實(shí)現(xiàn)4. 按照四人團(tuán)的說(shuō)法,Strategy策略模式的 根本思想是什么解答:1. 意圖是讓你可以使用不同的業(yè)務(wù)規(guī)那么或算法-取決于它們出場(chǎng)的場(chǎng)景。效果有:Strategy策略模式定

58、義了一系列的算法;switch語(yǔ)句或條件語(yǔ)句得到了防止;你必須以一樣的方式調(diào)用所有的算法它們必須擁有一樣的接口ConcreteStrategies與Context之間的交互可能需要在Context中參加getState之類的方法。2. 主要建設(shè)在:對(duì)象擁有責(zé)任;這些責(zé)任的不同的特定實(shí)現(xiàn)通過(guò)使用多態(tài)來(lái)表現(xiàn);需要將幾個(gè)不同的實(shí)現(xiàn)按照-概念上-一樣的算法來(lái)管理;一個(gè)好的設(shè)計(jì)經(jīng)歷:將問(wèn)題領(lǐng)域中發(fā)生的行為彼此別離-也就是說(shuō),使它們解耦。這讓改變對(duì)某一行為負(fù)責(zé)的類,而不會(huì)對(duì)其他行為產(chǎn)生不好的影響。3. 解決方案是:將算法的選擇和算法的實(shí)現(xiàn)相別離。讓客戶可以基于場(chǎng)景做出選擇。實(shí)現(xiàn):讓使用算法的類包含一個(gè)抽象

59、類,抽象類中有一個(gè)抽象方法指定若何調(diào)用算法。每個(gè)派生類根據(jù)需要實(shí)現(xiàn)算法。4. 定義一系列的算法,把它們一個(gè)個(gè)封裝起來(lái),并且使它們可相互替換,使算法可獨(dú)立于使用它的客戶而變化。六.應(yīng)用題1. 舉例說(shuō)出策略模式Strategy的應(yīng)用場(chǎng)景,并且畫出該模式的類圖。2. 在一個(gè)國(guó)際電子零售系統(tǒng)中,需要考慮為不同的國(guó)家的消費(fèi)者的定單計(jì)算稅費(fèi)問(wèn)題,請(qǐng)用模式的方法考慮若何解決該問(wèn)題。解答:1. Strategy模式是一種定義一系列算法的方法。概念上來(lái)看,所有這些算法完成的都是相同的工作,只是實(shí)現(xiàn)不同。比方,在一個(gè)國(guó)際電子商務(wù)系統(tǒng)中,不同的國(guó)家需要使用不同的稅額計(jì)算算法。通過(guò)Strategy模式,可以將這些規(guī)那

60、么封裝在一個(gè)抽象類中,然后派生出一系列的具體類。2. 通過(guò)Strategy模式,可以將這些規(guī)那么封裝在一個(gè)抽象類中,然后派生出一系列的具體類。通過(guò)從一個(gè)抽象派生類執(zhí)行算法的所有不同方式,主模塊就無(wú)需再操心實(shí)際使用的是哪一個(gè),這樣能夠允許發(fā)生新的變化。第15章 Decorator(裝飾)模式一.選擇1. 假設(shè)系統(tǒng)中的某子模塊需要為其他模塊 提供訪問(wèn)不同數(shù)據(jù)庫(kù)系統(tǒng)的功能,這些數(shù)據(jù) 庫(kù)系統(tǒng)提供的訪問(wèn)接口有一定的差異,但訪問(wèn)過(guò)程卻都是一樣的,例如,先連接數(shù)據(jù)庫(kù),在翻開(kāi)數(shù)據(jù)庫(kù),最后對(duì)數(shù)據(jù)庫(kù)進(jìn)展查詢,設(shè)計(jì)模式可抽象出一樣的數(shù)據(jù)庫(kù)訪問(wèn)過(guò)程。 A外觀 B 裝飾 C單間 D模板方法2. Decorator模式的

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論