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

下載本文檔

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

文檔簡(jiǎn)介

設(shè)計(jì)模式試題—?選擇設(shè)計(jì)模式具有的優(yōu)點(diǎn)()OB.程序易于理解D.簡(jiǎn)化軟件系統(tǒng)的設(shè)計(jì)BB.程序易于理解D.簡(jiǎn)化軟件系統(tǒng)的設(shè)計(jì)B不同問題的同一表相D.以上都不是B.對(duì)象組合與類的繼承D.系統(tǒng)復(fù)用與系統(tǒng)擴(kuò)展B)針對(duì)接口編程D)設(shè)計(jì)應(yīng)支持變化c?減少開發(fā)過程中的代碼開發(fā)工作量設(shè)計(jì)模式一般用來解決什么樣的問題()o同一問題的不同表相C.不同問題的不同表相設(shè)計(jì)模式的兩大主題是()oA系統(tǒng)的維護(hù)與開發(fā)c?系統(tǒng)架構(gòu)與系統(tǒng)開發(fā)以下哪些問題通過應(yīng)用設(shè)計(jì)模式不能夠解決。()A)指定對(duì)象的接口C)確定軟件的功能都正確實(shí)現(xiàn)二填空施式的基本要素包括名稱、意圖、問題、解決方案、參與者和協(xié)作者、(效果)、實(shí)現(xiàn)、GM參考。設(shè)計(jì)模式基本原則包括:開閉原則,(從場(chǎng)景進(jìn)行設(shè)計(jì)的原則),包容變化原則。設(shè)計(jì)模式是一個(gè)(抽象)的方案,它可以解決一類問題。1.在設(shè)計(jì)模式群體中,效果是指(原因和結(jié)果)。三.判斷適配器模式屬于創(chuàng)建型模式。錯(cuò)在設(shè)計(jì)模式中,“效果”只是指“原因和結(jié)果”。對(duì)設(shè)計(jì)模式使代碼編制不能真正工程化。錯(cuò)設(shè)計(jì)模式的兩大主題是系統(tǒng)復(fù)用與系統(tǒng)擴(kuò)展。對(duì)四.名詞解釋設(shè)計(jì)模式是一套被反復(fù)使用.多數(shù)人知曉的.經(jīng)過分類編目的.代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié).使用設(shè)計(jì)模式是為了可重用代碼.讓代碼更容易被他人理解.保證代碼可靠性.模板模式定義一個(gè)操作中的算法的骨架,而將一些步驟延遲到子類中?模式就是解決某一類問題的方法論.把解決某類問題的方法總結(jié)歸納到理論高度,那就是模式.內(nèi)聚度模塊內(nèi)部各成分彼此結(jié)合的緊密程度.五?簡(jiǎn)答題什么是設(shè)計(jì)模式?設(shè)計(jì)模式的目標(biāo)是什么?設(shè)計(jì)模式是一套被反復(fù)使用.多數(shù)人知曉的、經(jīng)過分類編目的.代碼設(shè)計(jì)經(jīng)驗(yàn)的總客使用設(shè)計(jì)模式是為了可重用代碼.讓代碼更容易被他人理解、保證代碼可旅性?設(shè)計(jì)模式的基本要素有哪些?名稱,意圖,問題,解決方案,參與者和協(xié)作者,效果,實(shí)現(xiàn),G(F參考.設(shè)計(jì)模式中一般都遵循的原則有什么?開-閉原則,根據(jù)場(chǎng)景進(jìn)行設(shè)計(jì)原則,優(yōu)先組合原則,包容變化原則。四人團(tuán)針對(duì)“創(chuàng)建優(yōu)秀面向?qū)ο笤O(shè)計(jì)”建議了哪些策略?針對(duì)接口編程,優(yōu)先使用對(duì)象組合而不是類繼承,找到并封裝變化點(diǎn)。第6章facade(外觀)模式—?選擇外觀模式的作用是OoA.當(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è)訪問他的全局訪問點(diǎn)。D.在方法中定義算法的框架,而將算法中的一些操作步驟延遲到子類中實(shí)現(xiàn)。Facade(外觀)模式的意圖是()。希望簡(jiǎn)化現(xiàn)有系統(tǒng)的使用方法,你需要定義自己的接口。將一個(gè)無法控制的現(xiàn)有對(duì)象與一個(gè)特定借口相匹配。將一組實(shí)現(xiàn)部分從另一組使用它們的對(duì)彖中分離出來。D.你需要為特定的客戶(或情況)提供特定系列的對(duì)彖。()模式定義了一個(gè)高層接口,這個(gè)接口使得這一子系統(tǒng)更加容易使用。Adapter(適配器)模式Adapter(適配器)模式C.Strategy(策略)模式下面屬于結(jié)構(gòu)模式的有()。A觀察者模式(Observer)C.策略模式(Strategy)二填空Bridge(橋接)模式D.Facade(外觀)模式單例模式(Singleton)D?外觀模式(Fafade)Facade模式可以用來(隱藏)系統(tǒng)。該模式能夠?qū)⑾到y(tǒng)作為自己的私有成員包含進(jìn)來。Facade模式要解決的問題:只需要使用一個(gè)復(fù)雜系統(tǒng)的一個(gè)(子集)。或者,需要用一種特殊的方式與系統(tǒng)交互。Facade模式不僅可以為方法調(diào)用創(chuàng)建更(簡(jiǎn)單)的接口,還可以減少客戶必須處理的對(duì)象數(shù)量。Facade外觀模式的解決方案是向客戶展現(xiàn)使用現(xiàn)有系統(tǒng)的一個(gè)新的(接口)。三.判斷Fagde(外觀)模式不僅可以為方法調(diào)用創(chuàng)建更簡(jiǎn)單的接口,還可以減少客戶必須處理的對(duì)象數(shù)量。對(duì)外觀模式,當(dāng)不能釆用生成子類的方法進(jìn)行擴(kuò)充時(shí),動(dòng)態(tài)地給一個(gè)對(duì)象添加一些額外的功能。錯(cuò)Facade模式為子系統(tǒng)中的一組接口提供的界面可能不一致。錯(cuò)Facade外觀模式只能為方法調(diào)用創(chuàng)建更簡(jiǎn)單的接口,不能減少客戶必須處理的對(duì)象數(shù)量。錯(cuò)四.名詞解釋Facade模式模式定義了一個(gè)高層接口,使得這一子系統(tǒng)更加容易使用,為子系統(tǒng)中的一組接口提供一個(gè)一致的界面?接口包含了一系列不被實(shí)現(xiàn)的方法,而把這些方法的實(shí)現(xiàn)交給繼承它的類?組合一個(gè)類是另一個(gè)類的組成成分.4?耦合度對(duì)模塊間關(guān)聯(lián)程度的度雖?五?簡(jiǎn)答題Facade(外觀)模式解決問題的方案是什么?如何實(shí)現(xiàn)?Facade向客戶展現(xiàn)使用現(xiàn)有系統(tǒng)的一個(gè)新的接口?如何實(shí)現(xiàn):定義一個(gè)(或一組)新的類來封裝所需的接口.讓新的類使用現(xiàn)有的系統(tǒng)。2?請(qǐng)簡(jiǎn)要說明在一個(gè)復(fù)雜系統(tǒng)中應(yīng)用Facade(外觀)模式的優(yōu)點(diǎn)。當(dāng)擁有一個(gè)復(fù)雜的系統(tǒng)時(shí),F(xiàn)apade(外觀)模式使我們只需要使用它的一部分功能.最終我們將得到一個(gè)更簡(jiǎn)單,更容易使用的或根據(jù)我們的需要定制的系統(tǒng).Facade式的意圖是什么?望那個(gè)簡(jiǎn)化現(xiàn)有系統(tǒng)的使用方法,需要定義自己的接口?在Facade模式中,客戶是如何使用子系統(tǒng)的?六.應(yīng)用題1?請(qǐng)論述在一個(gè)系統(tǒng)中應(yīng)用Fagde(外觀)模式的必要性,并給出一種解決方案。Fagde(外觀〉模式不僅可以為方法調(diào)用創(chuàng)建更簡(jiǎn)單的接口,還可以減少客戶必須處理的對(duì)象數(shù)量?舉個(gè)例子。假設(shè)有一個(gè)Client對(duì)象,這個(gè)對(duì)象必須處理Database、Model、Element類的對(duì)象.Client必須首先通過Database對(duì)象打開數(shù)據(jù)庫(kù),以得到一個(gè)對(duì)Model對(duì)象的引用,然后再向Model對(duì)象請(qǐng)求一個(gè)Element對(duì)象,最后向Element對(duì)象査詢所需的信息?而如果能創(chuàng)建一個(gè)DatabaseFacade類,讓Cli?it對(duì)象向它發(fā)出請(qǐng)求,那么上面的過程可能就會(huì)變得簡(jiǎn)單一些。2?請(qǐng)舉例說明Facade模式和Adapter模式使用場(chǎng)景的差異,并說明它們的解決方案及表現(xiàn)的特點(diǎn)。第7章Ad^terGS配器)模式一?選擇Adapter(適配器)模式的意圖是()。2希望簡(jiǎn)化現(xiàn)有系統(tǒng)的使用方法。你需要定義自己的借口。B.將一個(gè)無法控制的現(xiàn)有對(duì)象與一個(gè)特定借口相匹配?將一組實(shí)現(xiàn)部分從另一組使用它們的對(duì)彖中分離出來。D.你需要為特定的客戶(或情況)提供特定系列的對(duì)象。下面不屬于創(chuàng)建型模式的有()。抽象工廠模式(AbstractFactory)B?工廠方法模式(FactoryMethod)C-適配器模式(Adapter)D.單例模式(Singleton)將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另一個(gè)接口。這句話是對(duì)下列哪種模式的描述Oo策略模式(Strategies)B.橋接模式(Bridge)適配器模式(Adapter)D?單例模式(Singleton)以下關(guān)于結(jié)構(gòu)型模式說法不正確的是。0A)結(jié)構(gòu)型模式可以在不破壞類封裝性的基礎(chǔ)上,實(shí)現(xiàn)新的功能。B)結(jié)構(gòu)型模式主要用于創(chuàng)建一組對(duì)象。C)結(jié)構(gòu)型模式可以創(chuàng)建一組類的統(tǒng)一訪問接口。D)結(jié)構(gòu)型模式可以在不破壞類封裝性的基礎(chǔ)上,使得類可以同不曾估計(jì)到的系統(tǒng)進(jìn)行交互。二.填空適配器模式,分為類的適配器和對(duì)象的適配器兩種實(shí)現(xiàn)。其中類的適配器采用的是繼承關(guān)系,而對(duì)彖適配器采用的是(組合聚合)關(guān)系。(類Adapter卞Adapter模式有兩種類型有:對(duì)象(類Adapter卞UML是一種用來創(chuàng)建(程序模型)的圖像語言。(Ad^ter適配器)模式使原本接口不兼容而不能一起工作的類可以一起工作。適配器模式,分為類的適配器和對(duì)象的適配器兩種實(shí)現(xiàn)。其中類的適配器采用的是(繼承)關(guān)系,而對(duì)彖適配器采用的是組合聚類關(guān)系。三.判斷對(duì)彖適配器模式是合成聚合復(fù)用原則的典型應(yīng)用。對(duì)Adapter模式使原本由于接口不兼容而不能一起工作的那些類可以一起工作。對(duì)Facade模式和Adapter模式是相同類型的包裝器。錯(cuò)Adapter模式不是必須針對(duì)某個(gè)接口進(jìn)行設(shè)計(jì)。錯(cuò)四?名詞解釋Adapter模式將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另外一個(gè)接口?Adapter模式使原本由于接口不兼容而不能一起工作的那些類可以一起工作。對(duì)彖Adapter模式使用Adapter模式與適當(dāng)?shù)某橄箢愊嗥ヅ?,它通常依賴于一個(gè)對(duì)象(適配對(duì)象〉包含另一個(gè)對(duì)象(被適配對(duì)象).類Adapter模式當(dāng)實(shí)現(xiàn)Adapter模式的方法是使用多重繼承。在這種情況下,它被成為類Adapter模式。多態(tài)相關(guān)的對(duì)象按照各自類型來實(shí)現(xiàn)方法的能力。五.簡(jiǎn)答題給出Adapter模式的定義及意圖。意圖是將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另外一個(gè)接口。Adapter模式使原本由于接口不兼容而不能一起工作的那些類可以一起工作?Adapter模式的最常見的用法是什么?該模式可以使你不用操心什么方面?Adapter模式最通常的用壌就是保持多態(tài)。Ad^ter模式讓我們?cè)谶M(jìn)行設(shè)計(jì)時(shí)不必再擔(dān)心現(xiàn)存類的接口問題。Adapter模式問題的解決方案以及如何實(shí)現(xiàn)?解決方案是Adapter模式用我們需要的接口對(duì)無法修改的類進(jìn)行包裝。實(shí)現(xiàn):將現(xiàn)存的類包含在另一個(gè)類之中.包容類與需要的接口相匹配,并調(diào)用被包容類的方法.4.請(qǐng)簡(jiǎn)要說明在軟件設(shè)計(jì)中設(shè)計(jì)模式的作用?軟件設(shè)計(jì)模式(DesignPattern)是一套被反復(fù)使用.多數(shù)人知曉的、經(jīng)過分類編目的代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié).使用設(shè)計(jì)模式是為了適應(yīng)需求變化.可重用代碼.讓代碼更容易被他人理解.保證代碼的可靠性。六?應(yīng)用題1?根據(jù)你的理解,請(qǐng)分析Facade模式比Adapter模式的相同點(diǎn)和不同點(diǎn),并說明它們?cè)趯?shí)際應(yīng)用中的差異?在兩個(gè)模式中,都擁有現(xiàn)存的類,但是在Fagde模式中,無須針對(duì)某個(gè)接口進(jìn)行設(shè)計(jì);而在Adapter模式中則必須針對(duì)某個(gè)特定接口進(jìn)行設(shè)計(jì)?在F務(wù)ade模式中,動(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)apade模式簡(jiǎn)化接口,而Adapter模式將接口轉(zhuǎn)換成另一個(gè)現(xiàn)有的接2?請(qǐng)說明什么是Adapter模式,Adapter模式有哪幾種形式?請(qǐng)舉例說明?第8章擴(kuò)展我們的視野第9章Bridge(橋接)模式一?選擇關(guān)于繼承表述錯(cuò)誤的是:()。人繼承是一種通過擴(kuò)展一個(gè)已有對(duì)象的實(shí)現(xiàn),從而獲得新功能的復(fù)用方法。B?超類可以顯式地捕獲那些公共的屬性和方法。子類則通過附加屬性和方法來進(jìn)行實(shí)現(xiàn)的擴(kuò)展。C?在一定意義上說破壞了封裝性,因?yàn)檫@會(huì)將父類的實(shí)現(xiàn)細(xì)節(jié)暴露給子類。D?繼承本質(zhì)上是“白盒復(fù)用”,對(duì)父類的修改,不會(huì)影響到子類?在不破壞類封裝性的基礎(chǔ)上,使得類可以同不曾估計(jì)到的系統(tǒng)進(jìn)行交互。主要體現(xiàn)在()。A外觀模式(Facade)B裝飾模式(Decorator)C策略模式(Strategies)D橋接模式(Bridge)行為類模式使用()在類間分派行為。A接口B繼承機(jī)制C對(duì)象組合D委托下面的類圖表示的是哪個(gè)設(shè)計(jì)模式?()。A抽象工廠模式(AbstractFactory)B觀察者模式(Observer)C策略模式(Strategies)D橋接模式(Bridge)Bridge(橋接)模式的意圖是()。A希望簡(jiǎn)化現(xiàn)有系統(tǒng)的使用方法。你需要定義自己的借口。B.將一個(gè)無法控制的現(xiàn)有對(duì)象與一個(gè)特定借口相匹配。C.將一組實(shí)現(xiàn)部分從另一組使用它們的對(duì)象中分離出來.D.你需要為特定的客戶(或情況)提供特定系列的對(duì)象。按照四人團(tuán)的說法,Bridge模式的意圖是()。將抽象部分與它的實(shí)現(xiàn)部分相分離,使它們可以獨(dú)立地變化.B?將抽象部分與它的實(shí)現(xiàn)部分相分離,但它們不能獨(dú)立地變化.C?將抽象部分與它的實(shí)現(xiàn)部分相結(jié)合,但它們可以獨(dú)立地變化.將抽象部分與它的實(shí)現(xiàn)部分相結(jié)合,使它們相互依賴.以下敘述不對(duì)的是()oABridge模式是將抽象部分與它的實(shí)現(xiàn)部分分離,使它們可以獨(dú)立地變化.Bridge模式是發(fā)現(xiàn)并封裝不同點(diǎn)的極好例子.Bridge模式優(yōu)先使用繼承而不是組合.Bridge模式優(yōu)先使用組合而不是繼承.以下敘述不對(duì)的是()o學(xué)習(xí)設(shè)計(jì)模式告訴我們要盡可能使用繼承.學(xué)習(xí)設(shè)計(jì)模式通??梢哉业奖葍H采用面向?qū)﹀璺椒ǜ玫慕鉀Q方案.學(xué)習(xí)設(shè)計(jì)模式告訴我們要盡可能使用組合.Bridge模式適用于一個(gè)抽象部分擁有不同的實(shí)現(xiàn)部分的情形對(duì)Alexander的模式哲學(xué),以下敘述正確的是()。A學(xué)習(xí)設(shè)計(jì)模式,可以完全解決軟件開發(fā)中的變化情況.每個(gè)模式,可以無數(shù)次使用模式提供的解決方案,而不必再次重復(fù)同樣的工作方式.設(shè)計(jì)模式總是可以為需求的變化提供更好的解決方案.設(shè)計(jì)模式描述一個(gè)在開發(fā)的軟件環(huán)境中不斷產(chǎn)生新的問題時(shí),能提供很好的解決方案.根據(jù)Coplien關(guān)于共同點(diǎn)/變化點(diǎn)的說法,下面哪個(gè)是正確的()。丸共同點(diǎn)分析就是尋找一個(gè)不會(huì)隨時(shí)間變化的結(jié)構(gòu),而變化點(diǎn)分析就是捕捉變化的內(nèi)容.共同點(diǎn)分析是尋找家族成員的相同元素.在一個(gè)系統(tǒng)中,共同點(diǎn)和不同點(diǎn)的關(guān)系是相對(duì)的,可以互相轉(zhuǎn)化.共同點(diǎn)通常由父類實(shí)現(xiàn)而變化點(diǎn)通常由子類實(shí)現(xiàn).二填空在存在繼承關(guān)系的情況下,方法向超類方向集中,而數(shù)據(jù)向(子類)方向集中。當(dāng)存在一個(gè)抽象有不同實(shí)現(xiàn)時(shí)Bridge模式最為有用,它可以使抽彖和(實(shí)現(xiàn))相互獨(dú)立地進(jìn)行變化。(類型的封裝)是通過多態(tài)使用具有派生類的抽象類實(shí)現(xiàn)的。在進(jìn)行設(shè)計(jì)以應(yīng)對(duì)變化的過程中,應(yīng)該遵循兩條基本策略:找出變化并(封裝變化點(diǎn));優(yōu)先使用對(duì)彖組合,而不是類繼承。C++中,必須用一個(gè)定義(公共接口)的抽象類來實(shí)現(xiàn)Bridge模式的實(shí)現(xiàn)部分。為了提高內(nèi)聚和(松耦合),我們經(jīng)常會(huì)抽象出一些類的公共接口以形成抽象基類或者接口。封裝性好的代碼更容易測(cè)試,因?yàn)樗c其他代碼沒有(耦合)oBridge(橋接)模式是將抽象部分與它的實(shí)現(xiàn)部分分離,其中(實(shí)現(xiàn)部分)是指用來實(shí)現(xiàn)抽象類的派生類的對(duì)象。在進(jìn)行設(shè)計(jì)以應(yīng)對(duì)變化的過程中,應(yīng)該遵循兩條基本策略:找出變化并封裝變化點(diǎn);優(yōu)先使用對(duì)彖(組合),而不是類繼承。三.判斷為了提高內(nèi)聚和緊耦合,我們經(jīng)常會(huì)抽彖出一些類的公共接口以形成抽象基類或者接口。錯(cuò)繼承本質(zhì)上是“白盒復(fù)用”,對(duì)父類的修改,不會(huì)影響到子類。錯(cuò)繼承是一種通過擴(kuò)展一個(gè)已有對(duì)象的實(shí)現(xiàn),從而獲得新功能的復(fù)用方法。對(duì)即使在不知道如何實(shí)現(xiàn)Bridge(橋接)模式時(shí),你也可以判斷出在這種情況下這個(gè)模式是適用的。對(duì)在創(chuàng)建設(shè)計(jì)以處理變化的過程中,應(yīng)該優(yōu)先使用類繼承,而不是使用對(duì)象組合。錯(cuò)只有在共同點(diǎn)分析定義的上下文中,變化點(diǎn)才有意義。對(duì)變化點(diǎn)就是領(lǐng)域問題的特殊情形,而共同點(diǎn)則是指一般情形。錯(cuò)Bridge模式就是為系統(tǒng)提供一種高內(nèi)聚,松耦合的解決方案。對(duì)當(dāng)需要增加系統(tǒng)的功能時(shí),應(yīng)當(dāng)采用Bridge模式。錯(cuò)10?封裝就是指數(shù)據(jù)隱藏。錯(cuò)

四?名詞解釋抽彖是指不同事物之間概念上的聯(lián)系方式。重構(gòu)修改代碼改進(jìn)結(jié)構(gòu)但不增加新功能,就是所謂重構(gòu).內(nèi)聚性指的是例程中操作之間聯(lián)系的緊密程度.耦合性指的是兩個(gè)例程之間聯(lián)系的緊密程度。Bridge(橋梁)模式將抽象化與實(shí)現(xiàn)化脫耦,使得二者可以獨(dú)立的變化就是說將他們之間的強(qiáng)關(guān)聯(lián)變成弱關(guān)聯(lián),也就是指在一個(gè)軟件系統(tǒng)的抽象化和實(shí)現(xiàn)化之間使用組合/聚合關(guān)系而不是繼承關(guān)系,從而使兩者可以獨(dú)立的變化。五.簡(jiǎn)答題Bridge模式要解決的基本問題是什么?Bridge(橋接)模式適用于一個(gè)抽象部分擁有不同的實(shí)現(xiàn)部分的情況,它讓抽象部分和實(shí)現(xiàn)部分可以各自獨(dú)立的變化?給出Bridge模式的定義。采用Bridge模式的效果是什么?將抽象化與實(shí)現(xiàn)化脫耦,使得二者可以獨(dú)立的變化,也就是說將他們之間的強(qiáng)關(guān)聯(lián)變成弱關(guān)聯(lián),也就是指在一個(gè)軟件系統(tǒng)的抽象化和實(shí)現(xiàn)化之間使用組合/聚合關(guān)系而不是繼承關(guān)系,從而使兩者可以獨(dú)立的變化.效果是:“實(shí)現(xiàn)部分與使用它的對(duì)象的分離”增加了靈活性??蛻魧?duì)象不需要了解實(shí)現(xiàn)問題.什么是“一條規(guī)則,一個(gè)地方”?抽象類經(jīng)常讓自己的方法實(shí)際使用實(shí)現(xiàn)部分對(duì)象。抽象部分的派生類將調(diào)用這些方法?這樣如果需要修改,修改也會(huì)容易些,并且在實(shí)現(xiàn)整個(gè)模式之前讓你擁有一個(gè)好的起點(diǎn)?在學(xué)習(xí)Bridge(橋接)模式的過程中,應(yīng)該遵循下列處理變化的基本策略是什么?找出變化并封裝變化點(diǎn);優(yōu)先使用對(duì)象組合,而不是類繼承?Bridge(橋接)模式的解決方案是什么,以及如何實(shí)現(xiàn)?解決的問題是:為所有的實(shí)現(xiàn)部分定義一個(gè)接口,讓抽象類的所有派生類使用這個(gè)接口。實(shí)現(xiàn)^將實(shí)現(xiàn)部分封裝在一個(gè)抽象類中.在被實(shí)現(xiàn)的抽象部分基類中包含一個(gè)實(shí)現(xiàn)部分基類的句柄。六?應(yīng)用題根據(jù)你對(duì)Bridge模式的理解,槪要描述使用該模式的應(yīng)用耍求,并給出相應(yīng)的設(shè)計(jì)類圖。當(dāng)存在一個(gè)抽象有不同實(shí)現(xiàn)時(shí)Bridge模式最為有用,它可以使抽象和實(shí)現(xiàn)相互獨(dú)立地進(jìn)行變化?舉例說明使用Bridge模式的場(chǎng)合,給出在該場(chǎng)合下使用Bridge模式的解決方案,并說明該解決方案的優(yōu)點(diǎn)。打印驅(qū)動(dòng)程序是Bridge模式最典型的例子,也是最適合應(yīng)用Bridge模式的場(chǎng)合.Bridge模式的真正威力在于它能夠幫助我們看到什么時(shí)候應(yīng)該從問題域中提取實(shí)現(xiàn)?也就是說,有時(shí)侯有一個(gè)實(shí)體X使用系統(tǒng)&一個(gè)實(shí)體Y使用系統(tǒng)八我們可能認(rèn)為X總是與S相伴,而Y總是與T相伴,因此就將它們聯(lián)系(耦合〉起來.Bridge模式提醒我們,可以抽象出S和T,這樣更好,也就是說,Bridge模式最有用的地方,是在解耦抽象與實(shí)現(xiàn)之前考慮Bridge模式是否適用?第10章AbstractFactory(抽象工廠)模式—?選擇靜態(tài)工廠的核心角色是OO幾抽象產(chǎn)品B?具體產(chǎn)品C.靜態(tài)工廠D.消費(fèi)者以下屬于創(chuàng)建型模式的是()。B裝飾模式(Decorator)D橋接模式(Bridge)B裝飾模式(Decorator)D橋接模式(Bridge)D橋接模式C外觀模式(Facade)下面的類圖表示的是哪個(gè)設(shè)計(jì)模式?()oA抽象工廠模式B觀察者模式C策略模式ClientAbstractFactory>*CreateProductA()*CreateProductB()ConcreteFactorylConcreteFactory2個(gè)*CreateProductA()+CreateProduciB()?CreateProductA()+CreateProductB()AbstractProductB4KAbstractFactory(抽象工廠)模式的意圖是()。ConcreteFactorylConcreteFactory2個(gè)*CreateProductA()+CreateProduciB()?CreateProductA()+CreateProductB()AbstractProductB4K£希望簡(jiǎn)化現(xiàn)有系統(tǒng)的使用方法。你需要定義自己的借口。B.將一個(gè)無法控制的現(xiàn)有對(duì)象與一個(gè)特定借口相匹配。將一組實(shí)現(xiàn)部分從另一組使用它們的對(duì)象中分離出來。D.提供一個(gè)創(chuàng)建一系列相關(guān)或相互依賴對(duì)象的接口,而無需指定它們具體的類在根據(jù)不同的機(jī)器選擇設(shè)備驅(qū)動(dòng)程序的案例中,以下敘述不準(zhǔn)確的是0。人可以使用switch語句選擇驅(qū)動(dòng)程序.可以使用繼承來實(shí)現(xiàn)選擇驅(qū)動(dòng)程序,但它可能會(huì)產(chǎn)生類組合爆炸問題…可以選擇抽彖工廠模式實(shí)現(xiàn),且能避免組合爆炸問題.使用繼承的解決方案要比switch語句有更多的優(yōu)勢(shì).以下有關(guān)AbstractFactory(抽象工廠)模式正確的是()。AAbstractFactory的實(shí)例化方法就是具體工廠方法.AbstractFactory類和具體工廠方法可以分離,每個(gè)具體工廠負(fù)責(zé)一個(gè)抽象工廠方法接口的實(shí)現(xiàn).由于AbstractFactory類和具體工廠方法可以分離,因此在實(shí)現(xiàn)時(shí)會(huì)產(chǎn)生更多的類.當(dāng)問題存在相同的對(duì)象用于解決不同的情形時(shí),應(yīng)該使用抽彖工廠模式.7?根據(jù)《設(shè)計(jì)模式》,有關(guān)抽象工廠模式的定義,準(zhǔn)確的說法是()。A工廠方法是一個(gè)抽彖類的派生類實(shí)現(xiàn)的。B要?jiǎng)?chuàng)造的東西本身是抽象定義的,工廠方法可以靈活實(shí)現(xiàn)?C?抽彖工廠只關(guān)注概念,而具體工廠創(chuàng)建抽彖工廠。D抽象工廠派生出具體工廠對(duì)象和實(shí)現(xiàn)方法。關(guān)于抽象工廠模式,以下敘述不正確的是()A客戶對(duì)象不需要知道向誰請(qǐng)求所需的對(duì)象和如何使用這些對(duì)象。B抽象工廠類通過為每個(gè)不同類型的對(duì)象定義一個(gè)方法,來指定實(shí)例化哪個(gè)對(duì)彖。C具體工廠對(duì)彖負(fù)責(zé)指定哪些對(duì)彖要實(shí)例化。D將抽象工廠模式和適配器模式結(jié)合在一起,可以將概念相似的對(duì)象當(dāng)作同種對(duì)彖處理。關(guān)于抽象工廠模式(AbstractFactory),以下敘述正確的是()。A抽象工廠相對(duì)具體工廠而言,可以理解為抽彖工廠是抽象類,而具體工廠是對(duì)抽彖工廠的繼承,是抽象工廠的子類。B抽象工廠類不能實(shí)例化,具體工廠可以實(shí)例化。C抽象工廠定義接口,具體工廠實(shí)現(xiàn)某一接D抽象工廠模式將使用哪些對(duì)象的規(guī)則與如何使用這些對(duì)彖的邏輯有效地結(jié)合起來。下面屬于創(chuàng)建型模式的有()o抽象工廠(AbstractFactory)模式外觀(Facade)模式C?適配器(Adapter)模式D?橋接(Bridge)模式二填空(抽象工廠)模式提供了一系列相關(guān)或相互依賴對(duì)象的接口而無需指定他們具體的類。工廠模式分為簡(jiǎn)單工廠,工廠方法,(工廠方法)三種類型。AbstractFactory模式就是用來解決這類問題的:要?jiǎng)?chuàng)建一組相關(guān)或者(相互依賴)的對(duì)彖。AbstractFactory模式強(qiáng)調(diào)的是為創(chuàng)建多個(gè)相互依賴的對(duì)象提供一個(gè)(同一的接口)。我們可以使用(抽象工廠)模式,不同應(yīng)用程序都使用同一子系統(tǒng)。AbstractFactory意圖提供一個(gè)創(chuàng)建一系列相關(guān)或相互依賴對(duì)象的接口,而無需指定它們(具體的類)。當(dāng)一個(gè)系統(tǒng)要(獨(dú)立)于它的產(chǎn)品的創(chuàng)建、組合和表示時(shí)適合用AbstractFactory模式。AbstractFactory模式為如何創(chuàng)建對(duì)象組的每個(gè)成員定義(接口)。抽象工廠模式是定義一個(gè)(抽象類),然后為每個(gè)組實(shí)現(xiàn)一個(gè)具體類。AbstractFactory模式將如何執(zhí)行對(duì)象(實(shí)例化)規(guī)則從使用這些對(duì)象的客戶對(duì)象提取出來。三?判斷抽彖工廠模式提供了一系列相關(guān)或相互依賴對(duì)象的接口且必須指定他們具體的類。錯(cuò)AbstractFactory(抽象工廠)模式確保系統(tǒng)總能根據(jù)當(dāng)前的情況獲得合適的對(duì)象。對(duì)AbstractFactory(抽彖工廠)模式中,客戶對(duì)象不需知道“向誰請(qǐng)求需要的對(duì)彖”“如何使用這些對(duì)彖”。錯(cuò)典型情況下,一個(gè)AbstractFactory對(duì)象將針對(duì)每種必須實(shí)例化的對(duì)象擁有一個(gè)方法。對(duì)決定需要哪個(gè)工廠對(duì)象,實(shí)際上是判斷需要那個(gè)系列的對(duì)象。對(duì)從本質(zhì)上看,switch語句可以達(dá)到和抽象工廠相同的效果。錯(cuò)抽象工廠模式簡(jiǎn)化了設(shè)計(jì)過程。錯(cuò)一個(gè)抽象工廠對(duì)象總是要和一個(gè)具體工廠方法對(duì)象相結(jié)合。錯(cuò)抽彖工廠模式告訴我們,要針對(duì)接口而不是實(shí)現(xiàn)進(jìn)行設(shè)計(jì)。對(duì)使用抽彖工廠方法與優(yōu)先使用組合是相矛盾的。錯(cuò)四?名詞解釋AbstractFactory(抽象工廠)模式就是用來解決這類問題的:要?jiǎng)?chuàng)建一組相關(guān)或者相互依賴的對(duì)象。組合爆炸隨著問題中元素的增加,所出現(xiàn)的可能組合數(shù)劇烈增加,形象的說法就是組合爆炸.3封裝任材形式的隱藏。對(duì)象對(duì)它們的數(shù)據(jù)進(jìn)行封裝。抽象類對(duì)它們派生出的具體類進(jìn)行封裝抽象類為一組概念上相似的類定義方法和公共屬性.抽象類絕對(duì)不能被實(shí)例化.具體類是能被直接實(shí)例化的類、用例、信號(hào)、其他類元或其他泛化元素,它也可以用來描述實(shí)現(xiàn)的操作.五.簡(jiǎn)答題AbstractFactory的三個(gè)關(guān)鍵策略是什么?發(fā)現(xiàn)并封裝變化點(diǎn);優(yōu)先使用對(duì)象組合,而不是類繼承;針對(duì)接口設(shè)計(jì),而不是針對(duì)實(shí)現(xiàn)設(shè)計(jì)?采用AbstractFactory模式的效果是什么?效果:這個(gè)模式將“使用哪些對(duì)象”的規(guī)則與“”如何使用這些對(duì)象“的邏輯相隔離?為什么這個(gè)模式彼稱為“AbstractFactory"?因?yàn)樗獎(jiǎng)?chuàng)建的東西本身是由抽象定義的?工廠各種變化的實(shí)現(xiàn)如何選擇,模式并沒有具體規(guī)定。如何獲得正確的工廠對(duì)象?決定需要哪個(gè)工廠對(duì)象實(shí)際上是判斷需要哪個(gè)系列的對(duì)象。如何知道自己需要哪個(gè)系列呢?在類似的案例中,最可能的是由一個(gè)配置文件來告訴我們?然后就可以寫幾行代碼,根據(jù)這些配置信息來將合適的工廠對(duì)象實(shí)例化.5.在AbstractFactory(抽彖工廠)模式中對(duì)象的角色是什么?客戶對(duì)象只知道“向誰請(qǐng)求需要的對(duì)象”和“如何使用這些對(duì)象”?AbstractFactory類通過“為每種不同類型的對(duì)象定義一個(gè)方法來指定”哪些對(duì)象可以被實(shí)例化?典型情況下,一個(gè)AbstractFactor對(duì)象將針對(duì)每種必須實(shí)例化的對(duì)象擁有一個(gè)方法。具體工廠指定哪些對(duì)象將被實(shí)例化?六?應(yīng)用題1?請(qǐng)結(jié)合抽彖工廠模式,說明在實(shí)際應(yīng)用中如何生成正確的對(duì)彖。決定需要哪個(gè)工廠對(duì)象實(shí)際上與確定使用哪一組對(duì)象是相同的.例如,在驅(qū)動(dòng)程序問題中,有一組低分辨率動(dòng)程序和一組高分辨率驅(qū)動(dòng)程序,怎樣才能知道自己需要哪一組呢?在類似這樣的例子中,很可能通過一個(gè)配置文件獲知這一信息?然后可以編寫幾行代碼,根據(jù)配置信息將合適的工廠對(duì)象實(shí)例化。還可以使用AbstractFactory模式,不同應(yīng)用程序都使用同一子系統(tǒng)。在這種情況下,工廠對(duì)象將傳給子系統(tǒng),告訴子系統(tǒng)將要使用哪些對(duì)象,此時(shí),通常主系統(tǒng)知道子系統(tǒng)需要那一組對(duì)象,在調(diào)用子系統(tǒng)之前,將實(shí)例化正確的工廠對(duì)象.在抽象工廠模式中?有哪兩種工廠?它們的作用什么?使用抽彖工廠模式有什么優(yōu)點(diǎn)?第12章用模式解決CAD/CAM問題—?選擇應(yīng)用設(shè)計(jì)模式的一個(gè)優(yōu)點(diǎn)是()oA.適應(yīng)需求變化B.程序易于理解c?減少開發(fā)過程中的代碼開發(fā)工作量D.簡(jiǎn)化軟件系統(tǒng)的設(shè)計(jì)當(dāng)我們想創(chuàng)建一個(gè)具體的對(duì)象而又不希望指定具體的類時(shí),可以使用()模式。A.創(chuàng)建型B.結(jié)構(gòu)型C行為型D.以上都可以實(shí)現(xiàn)部分各不相同,但都可以通過一個(gè)通用接口被訪問是()模式中的包容變化。A.BridgeB.AbstractFactoryC?AdapterD?Facade以下哪一條是Alexander?的場(chǎng)景原貝ij:()。A在對(duì)彖實(shí)例化之前,要考慮它的實(shí)例化。B當(dāng)你有一個(gè)涉及創(chuàng)建對(duì)象的設(shè)計(jì)模式時(shí),對(duì)象應(yīng)為模式提供場(chǎng)景.C模式的選取與場(chǎng)景無關(guān)。D在一個(gè)系統(tǒng)中,由于模式之間的作用是相互的,不存在最高級(jí)別的模式。最高級(jí)別的模式約束其他的模式的不正確的敘述是()oA最高級(jí)別的模式?jīng)Q定其它模式的作用。B最高級(jí)別的模式是最重要的,其他的模式是次要的?C最高級(jí)別的模式為其它模式提供場(chǎng)景。D最高級(jí)別的模式也可稱為場(chǎng)景確定模式。二填空衣計(jì)模式的思想根源是(開閉)基本原則的宏觀運(yùn)用,本質(zhì)上是沒有任何模式的,發(fā)現(xiàn)模式的人永遠(yuǎn)是大師,而死守模式的人,最多只能是一個(gè)工匠。模式不僅僅是包容變化,它們還是變化之間的(關(guān)聯(lián))o系統(tǒng)中為其他模式確定場(chǎng)景的一個(gè)或兩個(gè)模式,這個(gè)模式將對(duì)其他模式能做的事進(jìn)行(約束)。通常情況下,當(dāng)一個(gè)模式使用另一個(gè)模式時(shí),看起來被使用模式是在使用模式的(場(chǎng)景)之中的。系統(tǒng)中的一個(gè)模式經(jīng)常通過為系統(tǒng)中的其他模式提供(場(chǎng)景)與其他模式相關(guān)聯(lián)。三.判斷識(shí)別可能性不等于必須跟著可能性走。對(duì)認(rèn)為一個(gè)實(shí)際不會(huì)出現(xiàn)的模式出現(xiàn)會(huì)起反作用。錯(cuò)對(duì)象適配器模式是依賴倒轉(zhuǎn)原則的典型應(yīng)用。錯(cuò)通過在問題領(lǐng)域中使用模式,可以用一種不同的方式來看待問題。對(duì)當(dāng)有一個(gè)涉及創(chuàng)建對(duì)象的設(shè)計(jì)模式時(shí),這些對(duì)象為這個(gè)模式提供場(chǎng)景。對(duì)四?名詞解釋1.場(chǎng)景一些事物存在或發(fā)生的相互關(guān)聯(lián)的狀態(tài)。CVA共同點(diǎn)/變化點(diǎn)分析場(chǎng)景原則當(dāng)有一個(gè)涉及創(chuàng)建對(duì)象的設(shè)計(jì)模式時(shí),這些對(duì)象為這個(gè)模式提供場(chǎng)景。公開接口多態(tài)五?簡(jiǎn)答題考慮場(chǎng)景時(shí)使用的一條原則是什么?考慮在系統(tǒng)中需要什么,然后再關(guān)心如何實(shí)現(xiàn)它?這也符合Alexander的場(chǎng)景原則:當(dāng)有一個(gè)涉及創(chuàng)建對(duì)象的設(shè)計(jì)模式時(shí),這些對(duì)象為這個(gè)模式提供場(chǎng)景.用模式的方法思考的步驟是什么?發(fā)現(xiàn)在問題領(lǐng)域中擁有的模式.這些是需要分析的模式;對(duì)于這些需要分析的模式,做下列工作:&挑出為其他模式提供最多場(chǎng)景的模式。b.在我的概念性最高的設(shè)計(jì)中使用這個(gè)模式?c?識(shí)別任何可能已經(jīng)出現(xiàn)的附加模式?將它們添加到“需要分析的模式中”?丘對(duì)于需要分析而還未分析的模式,至復(fù)上述過程;按照需要將細(xì)節(jié)添加到設(shè)計(jì)中?擴(kuò)展方法和類定義.3?場(chǎng)景和被使用模式之間有什么關(guān)聯(lián)?通常情況下,當(dāng)一個(gè)模式使用另一個(gè)模式時(shí),看起來被使用模式是在使用模式的場(chǎng)景之中的.這條規(guī)則也可能有例外,但是看起在大多數(shù)時(shí)候它都是有效的.4.什么是“最高模式”?指系統(tǒng)中為其他模式建立背景的一兩個(gè)模式.這個(gè)模式將約束其他模式的行為。為一個(gè)龐大的工程的CAD/CAM系統(tǒng)提供支持的基本需求是什么?創(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)正處于變化之中?可能有CAD/CAM系統(tǒng)的多個(gè)潛在版本存在,而專家系統(tǒng)需要擁有它們的接口.六?應(yīng)用題在CAD/CAM問題中,AbstractFactory模式被排除在“最高”模式之外,請(qǐng)舉例說明為什么?使用AbstractFactory模式的根本理由在于:如果有一個(gè)VI系統(tǒng)或者V2系統(tǒng),需要確保所有的實(shí)現(xiàn)對(duì)象都是VI類型或者V2類型的,但是Model對(duì)象本身已經(jīng)知道這一點(diǎn).如果其他對(duì)象可以很容易地封裝創(chuàng)建規(guī)則,就沒有必要再實(shí)現(xiàn)一個(gè)模式?之所以將AbstractFactory模式保留在模式集合中,是因?yàn)榈谝淮谓鉀Q這個(gè)問題時(shí),存在AbstractFactory模式。這也說明了,認(rèn)為存在一個(gè)其實(shí)并不存在的模式,未必會(huì)有什么副作用?第13章設(shè)計(jì)模式的原則和策略—?選擇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ì)典型情況下,()模式不包容變化。A>BridgeB.AbstractFactoryC.AdapterD.Facade下列屬于設(shè)計(jì)模式基本原則的是()oA繼承B.封裝C.開放関閉D都不是常用的設(shè)計(jì)模式可分為O。A創(chuàng)建型.結(jié)構(gòu)型和行為型B對(duì)象型.結(jié)構(gòu)型和行為型C過程型.創(chuàng)建型和結(jié)構(gòu)型D抽彖型.接口型和實(shí)現(xiàn)型以下哪一條不屬于設(shè)計(jì)模式的基本原則()oA開放-封閉原則。B根據(jù)場(chǎng)景進(jìn)行設(shè)計(jì)的原則。C優(yōu)先使用繼承的原則?D包容變化的原則。二填空設(shè)計(jì)模式基本原則包括:開閉原則,(根據(jù)場(chǎng)景進(jìn)行設(shè)計(jì)的原則),包容變化原則。最基本的UML圖是(類圖)。它不僅描述了類,而且說明了類之間的關(guān)系。模塊,方法和類應(yīng)該對(duì)擴(kuò)展是開放的,而對(duì)更改是(封閉)的。Alexander告訴我們要從(場(chǎng)景)進(jìn)行設(shè)計(jì),在設(shè)計(jì)我們的片段出現(xiàn)的細(xì)節(jié)之前先創(chuàng)建整體視圖。Bridge模式不僅僅對(duì)抽象部分和實(shí)現(xiàn)部分的變化進(jìn)行定義和包容,而且還定義了兩個(gè)變化之間的(關(guān)聯(lián))。三.判斷抽象不應(yīng)該依賴于細(xì)節(jié),細(xì)節(jié)應(yīng)當(dāng)依賴于抽象。錯(cuò)大多數(shù)設(shè)計(jì)模式還讓軟件更具有可修改性。對(duì)Open-Close原則的含義是一個(gè)軟件實(shí)體應(yīng)當(dāng)對(duì)擴(kuò)展開放,對(duì)修改關(guān)閉。對(duì)常用的設(shè)計(jì)模式可分為過程型、創(chuàng)建型和結(jié)構(gòu)型。錯(cuò)Adapter模式和Fagde模式總是在別的什么東西創(chuàng)造的場(chǎng)景中被定義。錯(cuò)四?名詞解釋開放-封閉原則模塊,方法和類應(yīng)該對(duì)擴(kuò)展是開放的,而對(duì)更改是封閉的.超類一個(gè)類,其他的類派生自它,包含主要屬性的定義,以及所有派生類都將使用(并且可能重裁)的方法的定義.屬性與一個(gè)對(duì)象相關(guān)聯(lián)的數(shù)據(jù)4?成員類的數(shù)據(jù)和方法方法與對(duì)象相關(guān)聯(lián)的函數(shù)五.簡(jiǎn)答題什么是開-閉原則?模塊,方法和類應(yīng)該對(duì)擴(kuò)展是開放的,而對(duì)更改是封閉的.換句話說,我們必須將我們的軟件設(shè)計(jì)成這樣我們可以在不修改代碼的前提下對(duì)我們的軟件進(jìn)行擴(kuò)展.?那些因素決定了用哪種方案來實(shí)現(xiàn)AbstractFactory模式?未裱化的可能性;“不修改當(dāng)前系統(tǒng)”的重要性;誰來控制將被創(chuàng)建的對(duì)象系列(是我們還是其他的開發(fā)組);使用的編程語言;數(shù)據(jù)庫(kù)或配置文件的可用性?3?按照模式進(jìn)行設(shè)計(jì)的策略是什么?1?開放苗閉的原則2?從場(chǎng)景進(jìn)行設(shè)計(jì)3.在類中包容變化?請(qǐng)舉例說明如何根據(jù)模式為其他的模式創(chuàng)造場(chǎng)景來選擇模式。比如,Bridge-Facade使用Facade模式來簡(jiǎn)化VI系統(tǒng)的接口,Bridge模式的實(shí)現(xiàn)部分之一使用Facade模式所創(chuàng)建的新接口?因此Bridge模式為Facade模式創(chuàng)造了場(chǎng)景?為什么說Bridge是包容變化原則的一個(gè)精彩的范例?Bridge模式中的實(shí)現(xiàn)部分各不相同,但都可以通過一個(gè)通用接口被訪問?系統(tǒng)可以接納新的實(shí)現(xiàn)部分,只要它也使用這個(gè)通用接口來實(shí)現(xiàn)。六?應(yīng)用題在本書的應(yīng)用案例中,為什么認(rèn)為Bridge模式高于Adapter模式?請(qǐng)舉例說明。Bridge模式的應(yīng)用情景是在概念的抽象有變化及其實(shí)現(xiàn)方式有多個(gè)。而Adapter模式的應(yīng)用情景是原有對(duì)彖的接口和需耍的接口有差別。而大多數(shù)情景下Bridge模式是作為Adapter模式的背景。也就是Bridge是Adapter的“最高模式”,在用Bridge模式封裝實(shí)現(xiàn)時(shí),大多數(shù)的實(shí)現(xiàn)并不可以派生自相同的基類,這時(shí)Adapter模式就可以派上用場(chǎng)了。設(shè)計(jì)模式應(yīng)遵循的原則有哪些?請(qǐng)舉例分別對(duì)它們進(jìn)行解釋?1?開放譜閉的原則2從場(chǎng)景進(jìn)行設(shè)計(jì)3.在類中包容變化.第14章Strategy(策略)模式—?選擇下面的類圖表示的是哪個(gè)設(shè)計(jì)模式?()A裝飾模式(Decorator)B策略模式(Strategy)C橋接模式(Bridge)D觀察者模式(Observer)ContextStrateKy-sinitegy:Stnitcg>*?<ontextlntcrtact<)-Algonthfnlntcrtace()111CuncrctcStratqoAConcrctcStrateg)BConcrctcStratcxy<'Strateg\^\lgonthinIntCTt3€C(I;Algonthmlntertacd)*/\lgorithmintrrtucc()?Algorithmlntrriacc()定義一系列的算法,把它們一個(gè)個(gè)封裝起來,并且使它們可相互替換。這句話是對(duì)哪種模式的描述()。A觀察者模式(Observer)B橋接模式(Bridge)C適配器模式(Adapter)D策略模式(Strategy)下面屬于行為模式的是()<>A抽象工廠模式(AbstractFactory)B適配器模式(Adapter)策略模式(Strategy〉D外觀模式(Facade)策略模式針對(duì)一組算法,將每一個(gè)算法封裝到具有()接口的獨(dú)立的類中,從而使得它們可以相互替換。A.不同B?—樣C共同D都不是Strategy(策略)模式的意圖是:()人定義一系列的算法,把它們一個(gè)個(gè)的封裝起來,并且使它們可相互替換.B.為一個(gè)對(duì)象動(dòng)態(tài)連接附加的職責(zé)。C?你希望只擁有一個(gè)對(duì)象,但不用全局對(duì)彖來控制對(duì)象的實(shí)例化。在對(duì)象之間定義一種一對(duì)多的依賴關(guān)系,這樣當(dāng)一個(gè)對(duì)彖的狀態(tài)改變時(shí),所有依賴于它的對(duì)象都將得到通知并自動(dòng)更新。作者在書中稱“分析癱瘓”為()。A因?yàn)閱栴}的復(fù)雜性導(dǎo)致分析失敗。B因?yàn)閱栴}的復(fù)雜性導(dǎo)致分析無法繼續(xù)進(jìn)行。C過度分析或過度設(shè)計(jì)。D錯(cuò)誤分析引起的后果。作者在《設(shè)計(jì)模式》中考慮變化的設(shè)計(jì)方式應(yīng)遵循的原則中,哪一條是錯(cuò)誤的()oA針對(duì)接口進(jìn)行編程,而不是針對(duì)實(shí)現(xiàn)編程。B優(yōu)先使用對(duì)象組合,而不是繼承。C對(duì)需求中可能變化的部分,應(yīng)重新設(shè)計(jì).D在不引起重新設(shè)計(jì)的前提下,對(duì)變化的概念進(jìn)行封裝。以下敘述不正確的是()oAswitch語句可能導(dǎo)致“分支蔓延”。BC++中的函數(shù)指針和C#中的委托都可以用來將代碼隱藏在精巧.緊湊.內(nèi)聚的函數(shù)中。C使用繼承可以實(shí)現(xiàn)復(fù)用。D作者認(rèn)為復(fù)用是程序開發(fā)中最重要的考慮因素.對(duì)繼承層次太深可能導(dǎo)致的問題的敘述不正確的是()。A繼承層次太深導(dǎo)致緊內(nèi)聚.B繼承層次太深導(dǎo)致弱內(nèi)聚。C繼承層次太深導(dǎo)致緊耦合。D繼承層次太深會(huì)產(chǎn)生冗余,并使測(cè)試?yán)щy。Strategy模式應(yīng)遵循的原則中不正確的是()。A對(duì)彖都具有職責(zé)。B職責(zé)不同的具體實(shí)現(xiàn)是通過多態(tài)的使用完成的。C概念上相同的算法具有多個(gè)不同的實(shí)現(xiàn),需要進(jìn)行管理。D優(yōu)先使用組合而不是繼承。二填空(Strategy模式)模式是一種定義一系列算法的方法。UML是一種用來創(chuàng)建(軟件模型)的圖像語言。最基本的UML圖是類圖。它不僅(描述)了類,而且說明了類之間的關(guān)系。Strategy模式還簡(jiǎn)化了單元測(cè)試,因?yàn)槊總€(gè)算法都有自己的類,可以通過自己的(接口)單獨(dú)測(cè)試。Strategy意圖是定義一系列的算法,把它們一個(gè)個(gè)(封裝)起來,并且使它們可相互替換。Strategy模式要求所(封裝)的算法應(yīng)處在使用它們的類之外。通過從一個(gè)抽彖類(派生)執(zhí)行算法的所有不同方式,主模塊無需再操心實(shí)際使用的是哪一個(gè)算法。在Strategy模式的使用中,將某個(gè)(變化的行為)從使用它的類中移出來,這種過程與數(shù)據(jù)庫(kù)中的規(guī)范化過程非常相似。將(算法)封裝在一個(gè)抽象類中。而且在某一時(shí)刻能夠互換地使用其中之一的方法,這就是Strategy模式的本質(zhì)。Strategy模式是一種定義(一系列)算法的方法。三.判斷Strategy模式使得算法可獨(dú)立于使用它的客戶而變化。對(duì)從Strategy模式的概念上來說,所有算法都做相同的工作,且擁有相同的實(shí)現(xiàn)。錯(cuò)Strategy(策略)模式是一種定義算法家族的方法。對(duì)Strategy(策略)模式讓我們可以將這些規(guī)則封裝在一個(gè)抽象類中,然后擁有一系列的抽象派生類。錯(cuò)Strategy(策略)模式的本質(zhì)是在一個(gè)抽彖類中封裝一個(gè)算法并交替使用這些算法。對(duì)在設(shè)計(jì)模式設(shè)計(jì)中,作者提倡對(duì)變化進(jìn)行封裝在一個(gè)類中,再通過對(duì)它進(jìn)行繼承的原則。錯(cuò)當(dāng)使用不同的規(guī)則處理算法,就可以釆用Strategy模式。錯(cuò)Strategy模式可以用不同的方式調(diào)用所有的算法。錯(cuò)Strategy模式簡(jiǎn)化了單元測(cè)試,因?yàn)槊總€(gè)算法都有自己的類,可以通過接口進(jìn)行單獨(dú)測(cè)試。對(duì)在算法設(shè)計(jì)時(shí),采用Strategy模式會(huì)增加大量的類。對(duì)四.名詞解釋Strategy(策略)模式定義一系列的算法,把它們一個(gè)個(gè)封裝起來,并且使它們可相互替換。這個(gè)模式使算法可獨(dú)立于使用它的客戶而變化.解耦'解耦在軟件里就是要讓兩個(gè)對(duì)象之間保持松耦合的關(guān)系,這種關(guān)系應(yīng)具有穩(wěn)定、標(biāo)準(zhǔn)等特性,其作用是限制了對(duì)象修改所影響的范圍.聚集聚集表示類之間的關(guān)系是整體與部分的關(guān)系O構(gòu)造函數(shù)五.簡(jiǎn)答題Strategy模式的意圖是什么嗎?它有哪些效果?意圖是讓你可以使用不同的業(yè)務(wù)規(guī)則或算法——取決于它們出場(chǎng)的場(chǎng)景?效果有:Strategy(策略)模式定義了一系列的算法;switch語句或條件語句得到了避免;你必須以相同的方式調(diào)用所有的算法(它們必須擁有相同的接口)CaicreteStrategies與Coitext之間的交互可能需要在Ccaitext中加入getState之類的方法。Strategy(策略)模式是建立在哪些原則的基礎(chǔ)上?主要建立在:對(duì)象擁有責(zé)任;這些責(zé)任的不同的特定實(shí)現(xiàn)通過使用多態(tài)來表現(xiàn);需要將幾個(gè)不同的實(shí)現(xiàn)按照——概念上相同的算法來管理;一個(gè)好的設(shè)計(jì)經(jīng)驗(yàn):將問題領(lǐng)域中發(fā)生的行為彼此分離也就是說,使它們解耦。這讓改變對(duì)某一行為負(fù)責(zé)的類,而不會(huì)對(duì)其他行為產(chǎn)生不好的影響。Strategy(策略)模式對(duì)問題的解決方案是什么?以及如何實(shí)現(xiàn)?解決方案是:將算法的選擇和算法的實(shí)現(xiàn)相分離.讓客戶可以基于場(chǎng)景做出選擇。實(shí)現(xiàn):讓使用算法的類包含一個(gè)抽象類,抽象類中有一個(gè)抽象方法指定如何調(diào)用算法.每個(gè)派生類根據(jù)需要實(shí)現(xiàn)算法.4按照四人團(tuán)的說法,Strategy策略模式的基本思想是什么?定義一系列的算法,把它們一個(gè)個(gè)封裝起來,并且使它們可相互替換,使算法可獨(dú)立于使用它的客戶而變化.六?應(yīng)用題舉例說出策略模式(Strategy)的應(yīng)用場(chǎng)景,并且畫出該模式的類圖。Strategy模式是一種定義一系列算法的方法?概念上來看,所有這些算法完成的都是相同的工作,只是實(shí)現(xiàn)不同.比如,在一個(gè)國(guó)際電子商務(wù)系統(tǒng)中,不同的國(guó)家需要使用不同的稅額計(jì)算算法。通過Strategy模式,可以將這些規(guī)則封裝在一個(gè)抽象類中,然后派生出一系列的具體類?在一個(gè)國(guó)際電子零售系統(tǒng)中,需要考慮為不同的國(guó)家的消費(fèi)者的定單計(jì)算稅費(fèi)問題,請(qǐng)用模式的方法考慮如何解決該問題。通過Strategy模式,可以將這些規(guī)則封裝在一個(gè)抽象類中,然后派生出一系列的具體類?通過從一個(gè)抽象派生類執(zhí)行算法的所有不同方式,主模塊就無需再操心實(shí)際使用的是哪一個(gè),這樣能夠允許發(fā)生新的變化.第15章Decorator黴飾)模式—?選擇若系統(tǒng)中的某子模塊需要為其他模塊()提供訪問不同數(shù)據(jù)庫(kù)系統(tǒng)的功能,這些數(shù)據(jù)庫(kù)系統(tǒng)提供的訪問接口有一定的差異,但訪問過程卻都是相同的,例如,先連接數(shù)據(jù)庫(kù),在打開數(shù)據(jù)庫(kù),最后對(duì)數(shù)據(jù)庫(kù)進(jìn)行査詢,設(shè)計(jì)模式可抽象岀相同的數(shù)據(jù)庫(kù)訪問過程。A.外觀B裝飾C單間D模板方法Decorator模式的描述正確的是()。A?該模式的意圖是動(dòng)態(tài)地給一個(gè)對(duì)象添加一些額外的職責(zé)。就增加功能來說,該模式相比生成子類不夠靈活。B?適用于在不影響其他對(duì)象的情況下,以動(dòng)態(tài).透明的方式給單個(gè)對(duì)象添加職貴。C?該模式的意圖是將對(duì)象組合成樹形結(jié)構(gòu)以表示“部分-整體”的層次結(jié)構(gòu)。該模式使得用戶對(duì)單個(gè)對(duì)彖和組合對(duì)象的使用具有一致性。D該模式適用性是你想表示對(duì)象的部分-整體層次結(jié)構(gòu)。下面屬于結(jié)構(gòu)模式的有()<>A.策略模式(Strategies)B.單例模式(Singleton)C.抽彖工廠模式(AbstractFactory)D.裝飾模式(Decorator)下面的類圖表示的是哪個(gè)設(shè)計(jì)模式?()<>A裝飾模式(Decorator)B適配器模式(Adapter)C策略模式(Strategies)D橋接模式(Bridge)Decorator(裝飾)模式的意圖是:()°A?定義一系列的算法,把它們一個(gè)個(gè)的封裝起來,并且使它們可相互替換。B?為一個(gè)對(duì)象動(dòng)態(tài)連接附加的職責(zé).C?你希望只擁有一個(gè)對(duì)象,但不用全局對(duì)彖來控制對(duì)彖的實(shí)例化。在對(duì)象之間定義一種一對(duì)多的依賴關(guān)系,這樣當(dāng)一個(gè)對(duì)彖的狀態(tài)改變時(shí),所有依賴于它的對(duì)象都將得到通知并自動(dòng)更新。二填空Decorator模式將一個(gè)功能鏈的(動(dòng)態(tài)構(gòu)建)與使用功能的客戶分離開來。Decorator模式對(duì)象在被裝飾功能之前或者之后或者前兩者同時(shí)執(zhí)行自己的(附加功能)。每個(gè)Decorator對(duì)象都對(duì)其后的對(duì)象(封裝)自己的新功能。就增加功能來說,Decorator模式相比生成子類更為(靈活)<.Decorator模式是為現(xiàn)有的功能(動(dòng)態(tài))添加附加功能的一種方法。三?判斷Decorator(裝飾)模式的意圖是為一個(gè)對(duì)彖連接附加的職責(zé)。錯(cuò)每個(gè)Decorator對(duì)象在被裝飾的功能之前或之后執(zhí)行自己的附加功能。對(duì)Decorator(裝飾)模式適用性是表示對(duì)象的部分-整體層次結(jié)構(gòu)。錯(cuò)Decorator(裝飾)模式的意圖是動(dòng)態(tài)地給一個(gè)對(duì)象添加一些額外的職責(zé)。就增加功能來說,該模式相比生成子類不夠靈活。錯(cuò)Decorator(裝飾)模式是為現(xiàn)有的功能動(dòng)態(tài)添加附加功能的一種方法。對(duì)四?名詞解釋Decorator(裝飾)模式動(dòng)態(tài)地給一個(gè)對(duì)象添加一些額外的職責(zé)?Decorator(裝飾)鏈?zhǔn)加谝粋€(gè)Conponet對(duì)象,每個(gè)裝飾者對(duì)象后面緊跟著另一個(gè)裝飾者對(duì)象,而對(duì)象鏈終于COTicreteCompcHiet對(duì)象。類圖是顯示了模型的靜態(tài)結(jié)構(gòu),特別是模型中存在的類.類的內(nèi)部結(jié)構(gòu)以及它們與其他類的關(guān)系等。交互圖以對(duì)象為中心以類和繼承為構(gòu)造機(jī)制,充分利用接口和多態(tài)提供靈活性?來認(rèn)識(shí).理解.刻劃客觀世界和設(shè)計(jì).構(gòu)建相應(yīng)的軟件系統(tǒng)?五?簡(jiǎn)答題每個(gè)Decorator對(duì)象封裝的是什么?每個(gè)Decorator對(duì)象都對(duì)其后的對(duì)象封裝自己的新功能。每個(gè)Decorator對(duì)象在被裝飾的功能之前或之后執(zhí)行自己的附加功能。Decorator(裝飾)模式的效果是什么?被添加的功能屬于小的對(duì)象。好處是可以在ConcreteCoiDpkt對(duì)象的功能之前或之后動(dòng)態(tài)添加功能.雖然_個(gè)裝飾者可以在被裝飾者之前或之后添加功能,但對(duì)象鏈總是以ConcreteCompcment對(duì)象結(jié)束?Decorator(裝飾)模式的解決方案是什么?如何實(shí)現(xiàn)?解決方案是允許擴(kuò)展一個(gè)對(duì)象的功能,而不必借助于子類型化?實(shí)現(xiàn):創(chuàng)建一個(gè)抽象類來表示原始的類和要添加到這個(gè)類上的新功能。在裝飾者類中,將“對(duì)新功能的調(diào)用”放在“對(duì)緊隨其后對(duì)象的調(diào)用”之前或之后,以獲得正確的順序。畫出Decorator(裝飾)模式的類圖。六?應(yīng)用題1?請(qǐng)結(jié)合實(shí)際應(yīng)用說明Decorator模式是怎樣對(duì)問題按功能進(jìn)行分解?Decorator模式并不通過一個(gè)控制方法控制新増功能,而是建議以需要的正確順序?qū)⑺韫δ艽?lián)起來,進(jìn)行控制.Decorator模式將這樣一個(gè)功能鏈的動(dòng)態(tài)構(gòu)建與使用功能的客戶分離開來?而且還將功能鏈的構(gòu)建與鏈組件分離開來.這樣就能靈活使用這些組件,比如,表頭,頁腳和SalesTicket分離開來.Decorator鏈有什么作用?它是怎樣形成的,請(qǐng)舉一個(gè)例子說明?第16章Singleton(單件)和Double-CheckedLocking(雙重檢査鎖定)模式—?選新Singleton模式適用于()。A當(dāng)類有多個(gè)實(shí)例而且客戶可以從一個(gè)眾所周知訪問點(diǎn)訪問它時(shí)。B當(dāng)這個(gè)唯一實(shí)例應(yīng)該是通過子類化可擴(kuò)展的,并且客戶應(yīng)該無需更改代碼就能使用一個(gè)擴(kuò)展的實(shí)例時(shí)?C當(dāng)構(gòu)造過程必須允許被構(gòu)造的對(duì)象有不同的表示時(shí)。D生成一批對(duì)彖時(shí)。保證一個(gè)類僅有一個(gè)實(shí)例,并提供一個(gè)訪問它的全局訪問點(diǎn)。這句話是對(duì)下列哪種模式的描述()。A.外觀模式(Facade)B策略模式(Strategies)適配器模式(Adapter)單例模式(Singleton)單例模式的作用是()<>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è)訪問他的全局訪問點(diǎn)。D.單例模式僅僅應(yīng)用于多線程應(yīng)用程序中。下面不屬于結(jié)構(gòu)模式的有()。幾適配器模式(Adapter)B.單例模式(Singleton)橋接模式(Bridge)D.裝飾模式(Decorator)單例模式(Singleton)(裝飾)模式的意圖是:()。幾定義一系列的算法,把它們一個(gè)個(gè)的封裝起來,并且使它們可相互替換。B.為一個(gè)對(duì)象動(dòng)態(tài)連接附加的職責(zé)。C?你希望只擁有一個(gè)對(duì)象,但不用全局對(duì)象來控制對(duì)象的實(shí)例化?在對(duì)象之間定義一種一對(duì)多的依賴關(guān)系,這樣當(dāng)一個(gè)對(duì)象的狀態(tài)改變時(shí),所有依賴于它的對(duì)象都將得到通知并自動(dòng)更新。二填空(單例)模式確保某一個(gè)類僅有一個(gè)實(shí)例,并自行實(shí)例化向整個(gè)系統(tǒng)提供這個(gè)實(shí)例。(單例)模式只應(yīng)在有真正的“單一實(shí)例”的需求時(shí)才可使用。單例模式屬于(創(chuàng)建型)模式。Singleton(單件)模式和Double-CheckedLocking模式都用以確保一個(gè)特定的類只有一個(gè)對(duì)象被(實(shí)例化)。Singleton(單件)模式用于單線程應(yīng)用程序,Double-CheckedLocking模式用于(多線程)應(yīng)用程序。三.判斷單例模式確保某一個(gè)類具有多個(gè)實(shí)例,并自行實(shí)例化向整個(gè)系統(tǒng)提供這個(gè)實(shí)例。錯(cuò)Singleton模式適用于當(dāng)類只能有一個(gè)實(shí)例,而且客戶可以從一個(gè)公共的訪問點(diǎn)訪問它。對(duì)Double-CheckedLocking模式既可以用于單線程又能應(yīng)用于多線程應(yīng)用程序。錯(cuò)Singleton(單件)模式的工作方式是擁有一個(gè)特定的方法,這個(gè)方法被用于實(shí)例化需要的對(duì)象。對(duì)Singleton(單件)模式屬于結(jié)構(gòu)性模式。錯(cuò)四?名詞解釋Singleton(單件)模式保證一個(gè)類僅有一個(gè)實(shí)例,并提供一個(gè)訪問它的全局訪問點(diǎn).Double-CheckedLocking模式是singleton的多線程版本?多線程在單個(gè)程序中同時(shí)運(yùn)行多個(gè)線程完成不同的工作,稱為多線程.封裝五?簡(jiǎn)答題1?Singleton(單件)模式怎樣工作?Singleton(單件)模式的工作方式是:擁有一個(gè)特定的方法,這個(gè)方法被用于實(shí)例化需要的對(duì)象。當(dāng)這個(gè)方法被調(diào)用時(shí),它檢査這個(gè)對(duì)象是否己經(jīng)被實(shí)例化.如果對(duì)象己經(jīng)被實(shí)例化,這個(gè)方法僅僅返回這個(gè)對(duì)象的一個(gè)引用.如果對(duì)象尚未實(shí)例化,這個(gè)方法將對(duì)象實(shí)例化并返回這個(gè)新的實(shí)例的引用.為了確保這是創(chuàng)建這個(gè)類型的對(duì)象的惟一途徑,在這個(gè)類中將構(gòu)造函數(shù)定義為protected或private。Singleton(單件)模式和Double-CheckedLocking模式之間有什么區(qū)別?Singletai(單件)模式用于單線程應(yīng)用程序,而Double-CheckedLocking模式用于多線程應(yīng)用程序。描述Singleton(單件)模式意圖以及效果?Singleton(單件)模式的意圖是你希望只擁有一個(gè)對(duì)象,但不用全局對(duì)象來控制對(duì)象的實(shí)例化?效果是客戶對(duì)象不需要關(guān)心是否已經(jīng)有Singleton的實(shí)例存在.這可以在Singleton內(nèi)部得到控制?Singleton(單件)模茂的用途是什么?它讓我們可以僅僅對(duì)對(duì)象進(jìn)行一次實(shí)例化,而不要求客戶對(duì)象關(guān)心這個(gè)對(duì)象是否存在?六.應(yīng)用題在一個(gè)多線程應(yīng)用程序中,如果使用Singleton模式,試分析可能會(huì)出現(xiàn)哪些問題。出現(xiàn)A進(jìn)程和B進(jìn)程同時(shí)訪問某個(gè)對(duì)象的時(shí)候,發(fā)現(xiàn)它沒有實(shí)例化過,結(jié)果A.B進(jìn)程分別將該類實(shí)例化一次,出現(xiàn)冗余對(duì)象的情況?這個(gè)情況并不多見,但是C++中出現(xiàn)了就是內(nèi)存泄露的重大問題。2?請(qǐng)說明Singleton模式的動(dòng)機(jī)和解決方案,這種處理方案和對(duì)象處理自己的單一實(shí)例化是否矛盾,請(qǐng)給出你的看法?第17章Observer?察者)模式—?選擇在觀察者模式中,表述錯(cuò)誤的是()。A?觀察者角色的更新是被動(dòng)的。B.被觀察者可以通知觀察者進(jìn)行更新C.觀察者可以改變被觀察者的狀態(tài),再由被觀察者通知所有觀察者依據(jù)被觀察者的狀態(tài)進(jìn)行?D.以上表述全部錯(cuò)誤。下面的類圖表示的是哪個(gè)設(shè)計(jì)模式?()。A策略模式(Strategies)B裝飾模式(Decorator)C橋接模式(Bridge)D觀察者模式(Observer)當(dāng)我們想創(chuàng)建一個(gè)具體的對(duì)彖而又不希望指定具體的類時(shí),可以使用()模式。A?創(chuàng)建型B.結(jié)構(gòu)型C行為型D.以上都可以下列模式中,屬于行為模式的是()。A?工廠模式B觀察者C適配器D以上都是Observer模式不適用于()。A當(dāng)一個(gè)抽象模型存在兩個(gè)方面,其中一個(gè)方面依賴于另一方面,將這二者封裝在獨(dú)立的對(duì)彖中以使它們可以各自獨(dú)立的改變和復(fù)用。B當(dāng)對(duì)一個(gè)對(duì)彖的改變需要同時(shí)改變其他對(duì)象,而不知道具體有多少個(gè)對(duì)象有待改變時(shí)。C當(dāng)一個(gè)對(duì)象必須通知其它對(duì)彖,而它又不能假定其它對(duì)彖是誰,也就是說你不希望這些對(duì)彖是緊耦合的。D—個(gè)對(duì)象結(jié)構(gòu)包含很多類對(duì)象,它們有不同的接口,而想對(duì)這些對(duì)象實(shí)施一些依賴于其具體類的操作?下面的類圖表示的是哪個(gè)設(shè)計(jì)模式?()。A觀察者模式B單例模式C橋接模式D策略模式7.觀察者模式定義了一種()的依賴關(guān)系。A一對(duì)多C多對(duì)多B_對(duì)_D以上都有可能下列模式中,屬于行為模式的是()。A?外觀模式B觀察者模式C單例模式D橋接模式對(duì)觀察者模式,以下敘述不正確的是()oA必須找出所有希望獲得通知的對(duì)象?B所有的觀察者對(duì)象有相同的接口。C如果觀察者的類型相同,目標(biāo)就可以輕易地通知它們。D在大多數(shù)情況下,觀察者負(fù)責(zé)了解自己觀察的是什么,目標(biāo)需要知道有哪些觀察者依賴自己。對(duì)于觀察者模式,以下敘述正確的是()oA當(dāng)對(duì)象之間存在依賴關(guān)系,就適宜采用觀察者模式。B如果對(duì)象之間的以來關(guān)系是固定的,采用觀察者模式會(huì)帶來負(fù)面影響.C如果需要得到某事件通知的對(duì)象列表是變化的,不適宜采用觀察者模式。D以上敘述皆不正確。二填空(觀察者)模式定義對(duì)象間的一種一對(duì)多的依賴關(guān)系,當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生改變時(shí),所有依賴于它的對(duì)象都得到通知并自動(dòng)更新。觀察者模式定義了一種(一對(duì)多)的依賴關(guān)系,讓多個(gè)觀察者對(duì)象同時(shí)監(jiān)聽某一個(gè)主題對(duì)彖。Observer(觀察者)模式是一個(gè)(行為)模式。當(dāng)依賴關(guān)系固定(或兒乎固定)時(shí),加入一個(gè)Observer模式可能只會(huì)增加(復(fù)雜性)。為了對(duì)所有Observer類型的對(duì)象實(shí)現(xiàn)Observer接口,有時(shí)候需要使用(Adapter)模式。如果系統(tǒng)在不同的情況下運(yùn)行,或由不同的用戶運(yùn)行,觀察者列表會(huì)不同,這時(shí)適宜用(Observer)模式。一個(gè)觀察者可能只需要處理事件的某些情況,在這種情況下,觀察者必須將額外的(通知)篩選掉。對(duì)觀察者模式,觀察者通常將觀察某個(gè)事件的責(zé)任交給(中心對(duì)象或Sfcject)。Subject類將實(shí)現(xiàn)一個(gè)(notify)方法來遍歷其Observer對(duì)彖列表,并調(diào)用每個(gè)Observer對(duì)彖的update方法。當(dāng)Subject對(duì)彖有了已注冊(cè)的Observer對(duì)象,事件發(fā)生時(shí),Subject對(duì)象通知Observer對(duì)彖將非常簡(jiǎn)單。為此,每個(gè)Observer對(duì)象都要實(shí)現(xiàn)一個(gè)(update)方法。三.判斷創(chuàng)建型模式關(guān)注的是組織類和對(duì)象的常用方法。錯(cuò)常用的設(shè)計(jì)模式可分為過程型、創(chuàng)建型和結(jié)構(gòu)型。錯(cuò)當(dāng)對(duì)象之間存在依賴關(guān)系時(shí)就應(yīng)該使用Observer(觀察者)模式。錯(cuò)當(dāng)依賴關(guān)系固定(或幾乎固定)時(shí),加入一個(gè)Observer(觀察者)模式可能只會(huì)增加復(fù)雜性。對(duì)一個(gè)Observer(觀察者)模式可能只需要處理事件的某種特定情況。對(duì)對(duì)觀察者模式,觸發(fā)事件的對(duì)象一一Subject對(duì)彖不需要知道觀察事件的所有對(duì)彖。對(duì)對(duì)觀察者模式,Subject不知道與哪種觀察者通信,Observer類封裝了各種特定的Observero對(duì)Observer對(duì)象有多種,但都從Subject對(duì)象收集信息,并收集相應(yīng)的操作結(jié)果。錯(cuò)Observer類包含了需要得到通知的對(duì)彖的概念,并為目標(biāo)對(duì)彖提供一個(gè)通知Observer的公共接口。對(duì)對(duì)觀察者模式,要求所有的Observer負(fù)責(zé)將自己注冊(cè)到目標(biāo)對(duì)象上。對(duì)四.名詞解釋Observer(觀察者)模式定義對(duì)象間的一種一對(duì)多的依賴關(guān)系,當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生改變時(shí),所有依賴于它的對(duì)象都得到通知并被自動(dòng)更新?結(jié)構(gòu)型模式將現(xiàn)存的對(duì)象結(jié)合在一起,處理接口,將實(shí)現(xiàn)與抽象類聯(lián)系起來。3?行為型模式提供一種顯得靈活(變化〉的行為,包容變化的模式。例如,strategy模式和observer模式?創(chuàng)建型模式創(chuàng)建或?qū)嵗瘜?duì)象五?簡(jiǎn)答題GOF設(shè)計(jì)模式按照模式的目的可分為哪三類?其目的分別是什么?結(jié)構(gòu)型:將現(xiàn)存的對(duì)象結(jié)合在一起.行為型:提供一種顯得靈活(變化)行為。創(chuàng)建型:穿件或?qū)嵗瘜?duì)象。Observer模式的定義,它要解決什么樣的問題?Observer(觀察者)模式定義對(duì)象間的一種一對(duì)多的依賴關(guān)系,當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生改變時(shí),所有依賴于它的對(duì)象都得到通知并被自動(dòng)更新.解決的問題是當(dāng)某個(gè)事件發(fā)生時(shí),你需要向一系列對(duì)象發(fā)出通知,而這個(gè)對(duì)象的列表是不斷變化的。Observer(觀察者)模式的效果。效果是如果某些Observer只對(duì)全部事件的一個(gè)子集感興趣,那么Subject可能會(huì)告訴Observer它們不需要知道的事件.如果在Subject通知Observer之后,Observer又轉(zhuǎn)過來請(qǐng)求附加信息,就可能?I要額外的通信?Observer(觀察者)模式如何實(shí)現(xiàn)解決方案的?讓“希望知道某個(gè)事件何時(shí)發(fā)生”的對(duì)象(Observer〉將自己注冊(cè)到另一個(gè)“監(jiān)視事件發(fā)生或自己觸發(fā)事件”的對(duì)象(Subject)±o當(dāng)事件發(fā)生時(shí),Subject告訴Observer"你關(guān)心的事情已經(jīng)發(fā)生了”?為了能讓所有的觀察者型對(duì)象實(shí)現(xiàn)Observer接口,有時(shí)候需要使用Adapter模式。六?應(yīng)用題給出Observer的定義以及它的意圖,舉一個(gè)例子說明該模式的適用場(chǎng)景,最后畫出它的類圖。定義對(duì)象間的一種一對(duì)多的依賴關(guān)系,當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生改變時(shí),所有依賴于它的對(duì)象都得到通知并被自動(dòng)更新?解決的問題是當(dāng)某個(gè)事件發(fā)生時(shí),你需要向一系列對(duì)象發(fā)出通知,而這個(gè)對(duì)象的列表是不斷變化的。例如,在Subject對(duì)象注冊(cè)了它的一個(gè)Observer對(duì)象,當(dāng)事件發(fā)生時(shí),Subject對(duì)象向Observer對(duì)象發(fā)出通知就非常簡(jiǎn)單了?為了實(shí)現(xiàn)這一功能,每個(gè)Observer類都實(shí)現(xiàn)一個(gè)叫做updata的方法?Subject類這樣實(shí)現(xiàn)notify方法:堪歷自己的Observer對(duì)象列表,調(diào)用其中每個(gè)Observer對(duì)象的sdata方法。Updata方法應(yīng)該包含處理事件的代碼。根據(jù)你的理解,請(qǐng)你談?wù)劷Y(jié)構(gòu)型和行為型模式的區(qū)別,并結(jié)合實(shí)際的應(yīng)用舉例說明。結(jié)構(gòu)型模式的目的是將現(xiàn)存的對(duì)象結(jié)合在一起,用繪是處理接口,將實(shí)現(xiàn)與抽象類聯(lián)系起來。而行為型模式的目的是提供一種顯得靈活的行為,用途是包容變化的.例子:結(jié)構(gòu)型模式中的Bridge模式或Decorator模式與行為型模式中的Strategy模式的比較.第18章TemplateMethod(模板方法)模式—?選擇以下屬于行為對(duì)象模式的是()。A模板模式(TemplateMethod)B裝飾模式(Decorator)C橋接模式(Bridge)D丄廠方法模式(FactoryMethod)模板方法的作用是()<>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è)訪問他的全局訪問點(diǎn)。D.在方法中定義算法的框架,而將算法中的一些操作步驟延遲到子類中實(shí)現(xiàn)。TemplateMethod(模版)模式的意圖是:()。幾定義一系列的算法,把它們一個(gè)個(gè)的封裝起來,并且使它們可相互替換。B?為一個(gè)對(duì)象動(dòng)態(tài)連接附加的職責(zé)。C?你希望只擁有一個(gè)對(duì)象,但不用全局對(duì)彖來控制對(duì)象的實(shí)例化。D?定義一個(gè)操作中的骨架,而將一些步驟延遲到子類中。使得子類可以不改變一個(gè)算法的結(jié)構(gòu)即可重定義該算法的某些特定步驟。有關(guān)模板方法模式,以下敘述不正確的是()。A允許定義不同的子過程,同時(shí)維護(hù)基本過程的一致性。B將定義和操作相互分離.C創(chuàng)建一個(gè)抽象類,用抽象方法實(shí)現(xiàn)一個(gè)過程,這些抽象方法必須在子類中實(shí)現(xiàn)。D實(shí)現(xiàn)抽彖方法的子類的步驟可以獨(dú)立變化,并且這些步驟可以采用Strategy模式來實(shí)現(xiàn)。在釆用模板方法模式對(duì)系統(tǒng)連接不同數(shù)據(jù)庫(kù)(例如Oracle和SQLServer)的連接時(shí),以下敘述不正確的是()。A盡管Oracle和SQLServer數(shù)據(jù)庫(kù)有不同的連接.査詢方法,但它們有相同的概念上的過程。B使用模板方法模式,可以在抽象類中捕捉共同點(diǎn)而在派生類中封裝不同點(diǎn)。C模板方法模式用于控制連接數(shù)據(jù)庫(kù)操作的一個(gè)序列的行為步驟。D可以采用通用的實(shí)現(xiàn)方法建立對(duì)不同數(shù)據(jù)庫(kù)的連接.二填空TemplateMethod模式準(zhǔn)備一個(gè)抽象類,將部分邏輯以(具體方法)以及具體構(gòu)造子類的形式實(shí)現(xiàn),然后聲明一些抽象方法來迫使子類實(shí)現(xiàn)剩余的邏輯。TemplateMethod(模版)模式是用以幫助從不同的步驟中抽象出一個(gè)(通過的)過程模式。TemplateMethod(模版)模式讓我們可以在抽彖類中捕捉共同點(diǎn)而在(派生類)中封裝不同點(diǎn)。當(dāng)遇到一個(gè)心得數(shù)據(jù)庫(kù)時(shí),TemplateMethod(模版)模式提供了一個(gè)(樣板)讓我們填充。我們創(chuàng)建一個(gè)新的派生類,并根據(jù)新的數(shù)據(jù)庫(kù)的要求實(shí)現(xiàn)特定的步驟。三.TemplateMethod三.TemplateMethod(模版)模式只是在一起工作的Strategies模式的集合。錯(cuò)TemplateMethod(模版)模式適用于有兒個(gè)相同且概念上相似的步驟存在的情況。錯(cuò)3.TemplateMethod(模版)模式被用于控制一個(gè)序列的行為步驟3.TemplateMethod(模版)模式被用于控制一個(gè)序列的行為步驟,這些步驟通常是相同的。錯(cuò)TemplateMethod是用以幫助從不同的步驟中抽象出一個(gè)通用的過程的模式。對(duì)TemplateMethod(模版)模式使得子類可以改變一個(gè)算法的結(jié)構(gòu)即可重定義該算

溫馨提示

  • 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. 人人文庫(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)論