




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
設計模式試題—?選擇設計模式具有的優(yōu)點()OB.程序易于理解D.簡化軟件系統(tǒng)的設計BB.程序易于理解D.簡化軟件系統(tǒng)的設計B不同問題的同一表相D.以上都不是B.對象組合與類的繼承D.系統(tǒng)復用與系統(tǒng)擴展B)針對接口編程D)設計應支持變化c?減少開發(fā)過程中的代碼開發(fā)工作量設計模式一般用來解決什么樣的問題()o同一問題的不同表相C.不同問題的不同表相設計模式的兩大主題是()oA系統(tǒng)的維護與開發(fā)c?系統(tǒng)架構(gòu)與系統(tǒng)開發(fā)以下哪些問題通過應用設計模式不能夠解決。()A)指定對象的接口C)確定軟件的功能都正確實現(xiàn)二填空施式的基本要素包括名稱、意圖、問題、解決方案、參與者和協(xié)作者、(效果)、實現(xiàn)、GM參考。設計模式基本原則包括:開閉原則,(從場景進行設計的原則),包容變化原則。設計模式是一個(抽象)的方案,它可以解決一類問題。1.在設計模式群體中,效果是指(原因和結(jié)果)。三.判斷適配器模式屬于創(chuàng)建型模式。錯在設計模式中,“效果”只是指“原因和結(jié)果”。對設計模式使代碼編制不能真正工程化。錯設計模式的兩大主題是系統(tǒng)復用與系統(tǒng)擴展。對四.名詞解釋設計模式是一套被反復使用.多數(shù)人知曉的.經(jīng)過分類編目的.代碼設計經(jīng)驗的總結(jié).使用設計模式是為了可重用代碼.讓代碼更容易被他人理解.保證代碼可靠性.模板模式定義一個操作中的算法的骨架,而將一些步驟延遲到子類中?模式就是解決某一類問題的方法論.把解決某類問題的方法總結(jié)歸納到理論高度,那就是模式.內(nèi)聚度模塊內(nèi)部各成分彼此結(jié)合的緊密程度.五?簡答題什么是設計模式?設計模式的目標是什么?設計模式是一套被反復使用.多數(shù)人知曉的、經(jīng)過分類編目的.代碼設計經(jīng)驗的總客使用設計模式是為了可重用代碼.讓代碼更容易被他人理解、保證代碼可旅性?設計模式的基本要素有哪些?名稱,意圖,問題,解決方案,參與者和協(xié)作者,效果,實現(xiàn),G(F參考.設計模式中一般都遵循的原則有什么?開-閉原則,根據(jù)場景進行設計原則,優(yōu)先組合原則,包容變化原則。四人團針對“創(chuàng)建優(yōu)秀面向?qū)ο笤O計”建議了哪些策略?針對接口編程,優(yōu)先使用對象組合而不是類繼承,找到并封裝變化點。第6章facade(外觀)模式—?選擇外觀模式的作用是OoA.當不能采用生成子類的方法進行擴充時,動態(tài)地給一個對象添加一些額外的功能。B.為了系統(tǒng)中的一組功能調(diào)用提供一個一致的接口,這個接口使得這一子系統(tǒng)更加容易使用.
C.保證一個類僅有一個實例,并提供一個訪問他的全局訪問點。D.在方法中定義算法的框架,而將算法中的一些操作步驟延遲到子類中實現(xiàn)。Facade(外觀)模式的意圖是()。希望簡化現(xiàn)有系統(tǒng)的使用方法,你需要定義自己的接口。將一個無法控制的現(xiàn)有對象與一個特定借口相匹配。將一組實現(xiàn)部分從另一組使用它們的對彖中分離出來。D.你需要為特定的客戶(或情況)提供特定系列的對彖。()模式定義了一個高層接口,這個接口使得這一子系統(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)作為自己的私有成員包含進來。Facade模式要解決的問題:只需要使用一個復雜系統(tǒng)的一個(子集)?;蛘撸枰靡环N特殊的方式與系統(tǒng)交互。Facade模式不僅可以為方法調(diào)用創(chuàng)建更(簡單)的接口,還可以減少客戶必須處理的對象數(shù)量。Facade外觀模式的解決方案是向客戶展現(xiàn)使用現(xiàn)有系統(tǒng)的一個新的(接口)。三.判斷Fagde(外觀)模式不僅可以為方法調(diào)用創(chuàng)建更簡單的接口,還可以減少客戶必須處理的對象數(shù)量。對外觀模式,當不能釆用生成子類的方法進行擴充時,動態(tài)地給一個對象添加一些額外的功能。錯Facade模式為子系統(tǒng)中的一組接口提供的界面可能不一致。錯Facade外觀模式只能為方法調(diào)用創(chuàng)建更簡單的接口,不能減少客戶必須處理的對象數(shù)量。錯四.名詞解釋Facade模式模式定義了一個高層接口,使得這一子系統(tǒng)更加容易使用,為子系統(tǒng)中的一組接口提供一個一致的界面?接口包含了一系列不被實現(xiàn)的方法,而把這些方法的實現(xiàn)交給繼承它的類?組合一個類是另一個類的組成成分.4?耦合度對模塊間關(guān)聯(lián)程度的度雖?五?簡答題Facade(外觀)模式解決問題的方案是什么?如何實現(xiàn)?Facade向客戶展現(xiàn)使用現(xiàn)有系統(tǒng)的一個新的接口?如何實現(xiàn):定義一個(或一組)新的類來封裝所需的接口.讓新的類使用現(xiàn)有的系統(tǒng)。2?請簡要說明在一個復雜系統(tǒng)中應用Facade(外觀)模式的優(yōu)點。當擁有一個復雜的系統(tǒng)時,F(xiàn)apade(外觀)模式使我們只需要使用它的一部分功能.最終我們將得到一個更簡單,更容易使用的或根據(jù)我們的需要定制的系統(tǒng).Facade式的意圖是什么?望那個簡化現(xiàn)有系統(tǒng)的使用方法,需要定義自己的接口?在Facade模式中,客戶是如何使用子系統(tǒng)的?六.應用題1?請論述在一個系統(tǒng)中應用Fagde(外觀)模式的必要性,并給出一種解決方案。Fagde(外觀〉模式不僅可以為方法調(diào)用創(chuàng)建更簡單的接口,還可以減少客戶必須處理的對象數(shù)量?舉個例子。假設有一個Client對象,這個對象必須處理Database、Model、Element類的對象.Client必須首先通過Database對象打開數(shù)據(jù)庫,以得到一個對Model對象的引用,然后再向Model對象請求一個Element對象,最后向Element對象査詢所需的信息?而如果能創(chuàng)建一個DatabaseFacade類,讓Cli?it對象向它發(fā)出請求,那么上面的過程可能就會變得簡單一些。2?請舉例說明Facade模式和Adapter模式使用場景的差異,并說明它們的解決方案及表現(xiàn)的特點。第7章Ad^terGS配器)模式一?選擇Adapter(適配器)模式的意圖是()。2希望簡化現(xiàn)有系統(tǒng)的使用方法。你需要定義自己的借口。B.將一個無法控制的現(xiàn)有對象與一個特定借口相匹配?將一組實現(xiàn)部分從另一組使用它們的對彖中分離出來。D.你需要為特定的客戶(或情況)提供特定系列的對象。下面不屬于創(chuàng)建型模式的有()。抽象工廠模式(AbstractFactory)B?工廠方法模式(FactoryMethod)C-適配器模式(Adapter)D.單例模式(Singleton)將一個類的接口轉(zhuǎn)換成客戶希望的另一個接口。這句話是對下列哪種模式的描述Oo策略模式(Strategies)B.橋接模式(Bridge)適配器模式(Adapter)D?單例模式(Singleton)以下關(guān)于結(jié)構(gòu)型模式說法不正確的是。0A)結(jié)構(gòu)型模式可以在不破壞類封裝性的基礎(chǔ)上,實現(xiàn)新的功能。B)結(jié)構(gòu)型模式主要用于創(chuàng)建一組對象。C)結(jié)構(gòu)型模式可以創(chuàng)建一組類的統(tǒng)一訪問接口。D)結(jié)構(gòu)型模式可以在不破壞類封裝性的基礎(chǔ)上,使得類可以同不曾估計到的系統(tǒng)進行交互。二.填空適配器模式,分為類的適配器和對象的適配器兩種實現(xiàn)。其中類的適配器采用的是繼承關(guān)系,而對彖適配器采用的是(組合聚合)關(guān)系。(類Adapter卞Adapter模式有兩種類型有:對象(類Adapter卞UML是一種用來創(chuàng)建(程序模型)的圖像語言。(Ad^ter適配器)模式使原本接口不兼容而不能一起工作的類可以一起工作。適配器模式,分為類的適配器和對象的適配器兩種實現(xiàn)。其中類的適配器采用的是(繼承)關(guān)系,而對彖適配器采用的是組合聚類關(guān)系。三.判斷對彖適配器模式是合成聚合復用原則的典型應用。對Adapter模式使原本由于接口不兼容而不能一起工作的那些類可以一起工作。對Facade模式和Adapter模式是相同類型的包裝器。錯Adapter模式不是必須針對某個接口進行設計。錯四?名詞解釋Adapter模式將一個類的接口轉(zhuǎn)換成客戶希望的另外一個接口?Adapter模式使原本由于接口不兼容而不能一起工作的那些類可以一起工作。對彖Adapter模式使用Adapter模式與適當?shù)某橄箢愊嗥ヅ?,它通常依賴于一個對象(適配對象〉包含另一個對象(被適配對象).類Adapter模式當實現(xiàn)Adapter模式的方法是使用多重繼承。在這種情況下,它被成為類Adapter模式。多態(tài)相關(guān)的對象按照各自類型來實現(xiàn)方法的能力。五.簡答題給出Adapter模式的定義及意圖。意圖是將一個類的接口轉(zhuǎn)換成客戶希望的另外一個接口。Adapter模式使原本由于接口不兼容而不能一起工作的那些類可以一起工作?Adapter模式的最常見的用法是什么?該模式可以使你不用操心什么方面?Adapter模式最通常的用壌就是保持多態(tài)。Ad^ter模式讓我們在進行設計時不必再擔心現(xiàn)存類的接口問題。Adapter模式問題的解決方案以及如何實現(xiàn)?解決方案是Adapter模式用我們需要的接口對無法修改的類進行包裝。實現(xiàn):將現(xiàn)存的類包含在另一個類之中.包容類與需要的接口相匹配,并調(diào)用被包容類的方法.4.請簡要說明在軟件設計中設計模式的作用?軟件設計模式(DesignPattern)是一套被反復使用.多數(shù)人知曉的、經(jīng)過分類編目的代碼設計經(jīng)驗的總結(jié).使用設計模式是為了適應需求變化.可重用代碼.讓代碼更容易被他人理解.保證代碼的可靠性。六?應用題1?根據(jù)你的理解,請分析Facade模式比Adapter模式的相同點和不同點,并說明它們在實際應用中的差異?在兩個模式中,都擁有現(xiàn)存的類,但是在Fagde模式中,無須針對某個接口進行設計;而在Adapter模式中則必須針對某個特定接口進行設計?在F務ade模式中,動機是簡化接口,而在Adapter模式中,盡管也是越簡單越好,目的是針對一個現(xiàn)有的接口進行設計,并不能簡化任何東西,即使可能有另一個更簡單的接口。總之,在實際應用中,F(xiàn)apade模式簡化接口,而Adapter模式將接口轉(zhuǎn)換成另一個現(xiàn)有的接2?請說明什么是Adapter模式,Adapter模式有哪幾種形式?請舉例說明?第8章擴展我們的視野第9章Bridge(橋接)模式一?選擇關(guān)于繼承表述錯誤的是:()。人繼承是一種通過擴展一個已有對象的實現(xiàn),從而獲得新功能的復用方法。B?超類可以顯式地捕獲那些公共的屬性和方法。子類則通過附加屬性和方法來進行實現(xiàn)的擴展。C?在一定意義上說破壞了封裝性,因為這會將父類的實現(xiàn)細節(jié)暴露給子類。D?繼承本質(zhì)上是“白盒復用”,對父類的修改,不會影響到子類?在不破壞類封裝性的基礎(chǔ)上,使得類可以同不曾估計到的系統(tǒng)進行交互。主要體現(xiàn)在()。A外觀模式(Facade)B裝飾模式(Decorator)C策略模式(Strategies)D橋接模式(Bridge)行為類模式使用()在類間分派行為。A接口B繼承機制C對象組合D委托下面的類圖表示的是哪個設計模式?()。A抽象工廠模式(AbstractFactory)B觀察者模式(Observer)C策略模式(Strategies)D橋接模式(Bridge)Bridge(橋接)模式的意圖是()。A希望簡化現(xiàn)有系統(tǒng)的使用方法。你需要定義自己的借口。B.將一個無法控制的現(xiàn)有對象與一個特定借口相匹配。C.將一組實現(xiàn)部分從另一組使用它們的對象中分離出來.D.你需要為特定的客戶(或情況)提供特定系列的對象。按照四人團的說法,Bridge模式的意圖是()。將抽象部分與它的實現(xiàn)部分相分離,使它們可以獨立地變化.B?將抽象部分與它的實現(xiàn)部分相分離,但它們不能獨立地變化.C?將抽象部分與它的實現(xiàn)部分相結(jié)合,但它們可以獨立地變化.將抽象部分與它的實現(xiàn)部分相結(jié)合,使它們相互依賴.以下敘述不對的是()oABridge模式是將抽象部分與它的實現(xiàn)部分分離,使它們可以獨立地變化.Bridge模式是發(fā)現(xiàn)并封裝不同點的極好例子.Bridge模式優(yōu)先使用繼承而不是組合.Bridge模式優(yōu)先使用組合而不是繼承.以下敘述不對的是()o學習設計模式告訴我們要盡可能使用繼承.學習設計模式通常可以找到比僅采用面向?qū)﹀璺椒ǜ玫慕鉀Q方案.學習設計模式告訴我們要盡可能使用組合.Bridge模式適用于一個抽象部分擁有不同的實現(xiàn)部分的情形對Alexander的模式哲學,以下敘述正確的是()。A學習設計模式,可以完全解決軟件開發(fā)中的變化情況.每個模式,可以無數(shù)次使用模式提供的解決方案,而不必再次重復同樣的工作方式.設計模式總是可以為需求的變化提供更好的解決方案.設計模式描述一個在開發(fā)的軟件環(huán)境中不斷產(chǎn)生新的問題時,能提供很好的解決方案.根據(jù)Coplien關(guān)于共同點/變化點的說法,下面哪個是正確的()。丸共同點分析就是尋找一個不會隨時間變化的結(jié)構(gòu),而變化點分析就是捕捉變化的內(nèi)容.共同點分析是尋找家族成員的相同元素.在一個系統(tǒng)中,共同點和不同點的關(guān)系是相對的,可以互相轉(zhuǎn)化.共同點通常由父類實現(xiàn)而變化點通常由子類實現(xiàn).二填空在存在繼承關(guān)系的情況下,方法向超類方向集中,而數(shù)據(jù)向(子類)方向集中。當存在一個抽象有不同實現(xiàn)時Bridge模式最為有用,它可以使抽彖和(實現(xiàn))相互獨立地進行變化。(類型的封裝)是通過多態(tài)使用具有派生類的抽象類實現(xiàn)的。在進行設計以應對變化的過程中,應該遵循兩條基本策略:找出變化并(封裝變化點);優(yōu)先使用對彖組合,而不是類繼承。C++中,必須用一個定義(公共接口)的抽象類來實現(xiàn)Bridge模式的實現(xiàn)部分。為了提高內(nèi)聚和(松耦合),我們經(jīng)常會抽象出一些類的公共接口以形成抽象基類或者接口。封裝性好的代碼更容易測試,因為它與其他代碼沒有(耦合)oBridge(橋接)模式是將抽象部分與它的實現(xiàn)部分分離,其中(實現(xiàn)部分)是指用來實現(xiàn)抽象類的派生類的對象。在進行設計以應對變化的過程中,應該遵循兩條基本策略:找出變化并封裝變化點;優(yōu)先使用對彖(組合),而不是類繼承。三.判斷為了提高內(nèi)聚和緊耦合,我們經(jīng)常會抽彖出一些類的公共接口以形成抽象基類或者接口。錯繼承本質(zhì)上是“白盒復用”,對父類的修改,不會影響到子類。錯繼承是一種通過擴展一個已有對象的實現(xiàn),從而獲得新功能的復用方法。對即使在不知道如何實現(xiàn)Bridge(橋接)模式時,你也可以判斷出在這種情況下這個模式是適用的。對在創(chuàng)建設計以處理變化的過程中,應該優(yōu)先使用類繼承,而不是使用對象組合。錯只有在共同點分析定義的上下文中,變化點才有意義。對變化點就是領(lǐng)域問題的特殊情形,而共同點則是指一般情形。錯Bridge模式就是為系統(tǒng)提供一種高內(nèi)聚,松耦合的解決方案。對當需要增加系統(tǒng)的功能時,應當采用Bridge模式。錯10?封裝就是指數(shù)據(jù)隱藏。錯
四?名詞解釋抽彖是指不同事物之間概念上的聯(lián)系方式。重構(gòu)修改代碼改進結(jié)構(gòu)但不增加新功能,就是所謂重構(gòu).內(nèi)聚性指的是例程中操作之間聯(lián)系的緊密程度.耦合性指的是兩個例程之間聯(lián)系的緊密程度。Bridge(橋梁)模式將抽象化與實現(xiàn)化脫耦,使得二者可以獨立的變化就是說將他們之間的強關(guān)聯(lián)變成弱關(guān)聯(lián),也就是指在一個軟件系統(tǒng)的抽象化和實現(xiàn)化之間使用組合/聚合關(guān)系而不是繼承關(guān)系,從而使兩者可以獨立的變化。五.簡答題Bridge模式要解決的基本問題是什么?Bridge(橋接)模式適用于一個抽象部分擁有不同的實現(xiàn)部分的情況,它讓抽象部分和實現(xiàn)部分可以各自獨立的變化?給出Bridge模式的定義。采用Bridge模式的效果是什么?將抽象化與實現(xiàn)化脫耦,使得二者可以獨立的變化,也就是說將他們之間的強關(guān)聯(lián)變成弱關(guān)聯(lián),也就是指在一個軟件系統(tǒng)的抽象化和實現(xiàn)化之間使用組合/聚合關(guān)系而不是繼承關(guān)系,從而使兩者可以獨立的變化.效果是:“實現(xiàn)部分與使用它的對象的分離”增加了靈活性??蛻魧ο蟛恍枰私鈱崿F(xiàn)問題.什么是“一條規(guī)則,一個地方”?抽象類經(jīng)常讓自己的方法實際使用實現(xiàn)部分對象。抽象部分的派生類將調(diào)用這些方法?這樣如果需要修改,修改也會容易些,并且在實現(xiàn)整個模式之前讓你擁有一個好的起點?在學習Bridge(橋接)模式的過程中,應該遵循下列處理變化的基本策略是什么?找出變化并封裝變化點;優(yōu)先使用對象組合,而不是類繼承?Bridge(橋接)模式的解決方案是什么,以及如何實現(xiàn)?解決的問題是:為所有的實現(xiàn)部分定義一個接口,讓抽象類的所有派生類使用這個接口。實現(xiàn)^將實現(xiàn)部分封裝在一個抽象類中.在被實現(xiàn)的抽象部分基類中包含一個實現(xiàn)部分基類的句柄。六?應用題根據(jù)你對Bridge模式的理解,槪要描述使用該模式的應用耍求,并給出相應的設計類圖。當存在一個抽象有不同實現(xiàn)時Bridge模式最為有用,它可以使抽象和實現(xiàn)相互獨立地進行變化?舉例說明使用Bridge模式的場合,給出在該場合下使用Bridge模式的解決方案,并說明該解決方案的優(yōu)點。打印驅(qū)動程序是Bridge模式最典型的例子,也是最適合應用Bridge模式的場合.Bridge模式的真正威力在于它能夠幫助我們看到什么時候應該從問題域中提取實現(xiàn)?也就是說,有時侯有一個實體X使用系統(tǒng)&一個實體Y使用系統(tǒng)八我們可能認為X總是與S相伴,而Y總是與T相伴,因此就將它們聯(lián)系(耦合〉起來.Bridge模式提醒我們,可以抽象出S和T,這樣更好,也就是說,Bridge模式最有用的地方,是在解耦抽象與實現(xiàn)之前考慮Bridge模式是否適用?第10章AbstractFactory(抽象工廠)模式—?選擇靜態(tài)工廠的核心角色是OO幾抽象產(chǎn)品B?具體產(chǎn)品C.靜態(tài)工廠D.消費者以下屬于創(chuàng)建型模式的是()。B裝飾模式(Decorator)D橋接模式(Bridge)B裝飾模式(Decorator)D橋接模式(Bridge)D橋接模式C外觀模式(Facade)下面的類圖表示的是哪個設計模式?()oA抽象工廠模式B觀察者模式C策略模式ClientAbstractFactory>*CreateProductA()*CreateProductB()ConcreteFactorylConcreteFactory2個*CreateProductA()+CreateProduciB()?CreateProductA()+CreateProductB()AbstractProductB4KAbstractFactory(抽象工廠)模式的意圖是()。ConcreteFactorylConcreteFactory2個*CreateProductA()+CreateProduciB()?CreateProductA()+CreateProductB()AbstractProductB4K£希望簡化現(xiàn)有系統(tǒng)的使用方法。你需要定義自己的借口。B.將一個無法控制的現(xiàn)有對象與一個特定借口相匹配。將一組實現(xiàn)部分從另一組使用它們的對象中分離出來。D.提供一個創(chuàng)建一系列相關(guān)或相互依賴對象的接口,而無需指定它們具體的類在根據(jù)不同的機器選擇設備驅(qū)動程序的案例中,以下敘述不準確的是0。人可以使用switch語句選擇驅(qū)動程序.可以使用繼承來實現(xiàn)選擇驅(qū)動程序,但它可能會產(chǎn)生類組合爆炸問題…可以選擇抽彖工廠模式實現(xiàn),且能避免組合爆炸問題.使用繼承的解決方案要比switch語句有更多的優(yōu)勢.以下有關(guān)AbstractFactory(抽象工廠)模式正確的是()。AAbstractFactory的實例化方法就是具體工廠方法.AbstractFactory類和具體工廠方法可以分離,每個具體工廠負責一個抽象工廠方法接口的實現(xiàn).由于AbstractFactory類和具體工廠方法可以分離,因此在實現(xiàn)時會產(chǎn)生更多的類.當問題存在相同的對象用于解決不同的情形時,應該使用抽彖工廠模式.7?根據(jù)《設計模式》,有關(guān)抽象工廠模式的定義,準確的說法是()。A工廠方法是一個抽彖類的派生類實現(xiàn)的。B要創(chuàng)造的東西本身是抽象定義的,工廠方法可以靈活實現(xiàn)?C?抽彖工廠只關(guān)注概念,而具體工廠創(chuàng)建抽彖工廠。D抽象工廠派生出具體工廠對象和實現(xiàn)方法。關(guān)于抽象工廠模式,以下敘述不正確的是()A客戶對象不需要知道向誰請求所需的對象和如何使用這些對象。B抽象工廠類通過為每個不同類型的對象定義一個方法,來指定實例化哪個對彖。C具體工廠對彖負責指定哪些對彖要實例化。D將抽象工廠模式和適配器模式結(jié)合在一起,可以將概念相似的對象當作同種對彖處理。關(guān)于抽象工廠模式(AbstractFactory),以下敘述正確的是()。A抽象工廠相對具體工廠而言,可以理解為抽彖工廠是抽象類,而具體工廠是對抽彖工廠的繼承,是抽象工廠的子類。B抽象工廠類不能實例化,具體工廠可以實例化。C抽象工廠定義接口,具體工廠實現(xiàn)某一接D抽象工廠模式將使用哪些對象的規(guī)則與如何使用這些對彖的邏輯有效地結(jié)合起來。下面屬于創(chuàng)建型模式的有()o抽象工廠(AbstractFactory)模式外觀(Facade)模式C?適配器(Adapter)模式D?橋接(Bridge)模式二填空(抽象工廠)模式提供了一系列相關(guān)或相互依賴對象的接口而無需指定他們具體的類。工廠模式分為簡單工廠,工廠方法,(工廠方法)三種類型。AbstractFactory模式就是用來解決這類問題的:要創(chuàng)建一組相關(guān)或者(相互依賴)的對彖。AbstractFactory模式強調(diào)的是為創(chuàng)建多個相互依賴的對象提供一個(同一的接口)。我們可以使用(抽象工廠)模式,不同應用程序都使用同一子系統(tǒng)。AbstractFactory意圖提供一個創(chuàng)建一系列相關(guān)或相互依賴對象的接口,而無需指定它們(具體的類)。當一個系統(tǒng)要(獨立)于它的產(chǎn)品的創(chuàng)建、組合和表示時適合用AbstractFactory模式。AbstractFactory模式為如何創(chuàng)建對象組的每個成員定義(接口)。抽象工廠模式是定義一個(抽象類),然后為每個組實現(xiàn)一個具體類。AbstractFactory模式將如何執(zhí)行對象(實例化)規(guī)則從使用這些對象的客戶對象提取出來。三?判斷抽彖工廠模式提供了一系列相關(guān)或相互依賴對象的接口且必須指定他們具體的類。錯AbstractFactory(抽象工廠)模式確保系統(tǒng)總能根據(jù)當前的情況獲得合適的對象。對AbstractFactory(抽彖工廠)模式中,客戶對象不需知道“向誰請求需要的對彖”“如何使用這些對彖”。錯典型情況下,一個AbstractFactory對象將針對每種必須實例化的對象擁有一個方法。對決定需要哪個工廠對象,實際上是判斷需要那個系列的對象。對從本質(zhì)上看,switch語句可以達到和抽象工廠相同的效果。錯抽象工廠模式簡化了設計過程。錯一個抽象工廠對象總是要和一個具體工廠方法對象相結(jié)合。錯抽彖工廠模式告訴我們,要針對接口而不是實現(xiàn)進行設計。對使用抽彖工廠方法與優(yōu)先使用組合是相矛盾的。錯四?名詞解釋AbstractFactory(抽象工廠)模式就是用來解決這類問題的:要創(chuàng)建一組相關(guān)或者相互依賴的對象。組合爆炸隨著問題中元素的增加,所出現(xiàn)的可能組合數(shù)劇烈增加,形象的說法就是組合爆炸.3封裝任材形式的隱藏。對象對它們的數(shù)據(jù)進行封裝。抽象類對它們派生出的具體類進行封裝抽象類為一組概念上相似的類定義方法和公共屬性.抽象類絕對不能被實例化.具體類是能被直接實例化的類、用例、信號、其他類元或其他泛化元素,它也可以用來描述實現(xiàn)的操作.五.簡答題AbstractFactory的三個關(guān)鍵策略是什么?發(fā)現(xiàn)并封裝變化點;優(yōu)先使用對象組合,而不是類繼承;針對接口設計,而不是針對實現(xiàn)設計?采用AbstractFactory模式的效果是什么?效果:這個模式將“使用哪些對象”的規(guī)則與“”如何使用這些對象“的邏輯相隔離?為什么這個模式彼稱為“AbstractFactory"?因為它要創(chuàng)建的東西本身是由抽象定義的?工廠各種變化的實現(xiàn)如何選擇,模式并沒有具體規(guī)定。如何獲得正確的工廠對象?決定需要哪個工廠對象實際上是判斷需要哪個系列的對象。如何知道自己需要哪個系列呢?在類似的案例中,最可能的是由一個配置文件來告訴我們?然后就可以寫幾行代碼,根據(jù)這些配置信息來將合適的工廠對象實例化.5.在AbstractFactory(抽彖工廠)模式中對象的角色是什么?客戶對象只知道“向誰請求需要的對象”和“如何使用這些對象”?AbstractFactory類通過“為每種不同類型的對象定義一個方法來指定”哪些對象可以被實例化?典型情況下,一個AbstractFactor對象將針對每種必須實例化的對象擁有一個方法。具體工廠指定哪些對象將被實例化?六?應用題1?請結(jié)合抽彖工廠模式,說明在實際應用中如何生成正確的對彖。決定需要哪個工廠對象實際上與確定使用哪一組對象是相同的.例如,在驅(qū)動程序問題中,有一組低分辨率動程序和一組高分辨率驅(qū)動程序,怎樣才能知道自己需要哪一組呢?在類似這樣的例子中,很可能通過一個配置文件獲知這一信息?然后可以編寫幾行代碼,根據(jù)配置信息將合適的工廠對象實例化。還可以使用AbstractFactory模式,不同應用程序都使用同一子系統(tǒng)。在這種情況下,工廠對象將傳給子系統(tǒng),告訴子系統(tǒng)將要使用哪些對象,此時,通常主系統(tǒng)知道子系統(tǒng)需要那一組對象,在調(diào)用子系統(tǒng)之前,將實例化正確的工廠對象.在抽象工廠模式中?有哪兩種工廠?它們的作用什么?使用抽彖工廠模式有什么優(yōu)點?第12章用模式解決CAD/CAM問題—?選擇應用設計模式的一個優(yōu)點是()oA.適應需求變化B.程序易于理解c?減少開發(fā)過程中的代碼開發(fā)工作量D.簡化軟件系統(tǒng)的設計當我們想創(chuàng)建一個具體的對象而又不希望指定具體的類時,可以使用()模式。A.創(chuàng)建型B.結(jié)構(gòu)型C行為型D.以上都可以實現(xiàn)部分各不相同,但都可以通過一個通用接口被訪問是()模式中的包容變化。A.BridgeB.AbstractFactoryC?AdapterD?Facade以下哪一條是Alexander?的場景原貝ij:()。A在對彖實例化之前,要考慮它的實例化。B當你有一個涉及創(chuàng)建對象的設計模式時,對象應為模式提供場景.C模式的選取與場景無關(guān)。D在一個系統(tǒng)中,由于模式之間的作用是相互的,不存在最高級別的模式。最高級別的模式約束其他的模式的不正確的敘述是()oA最高級別的模式?jīng)Q定其它模式的作用。B最高級別的模式是最重要的,其他的模式是次要的?C最高級別的模式為其它模式提供場景。D最高級別的模式也可稱為場景確定模式。二填空衣計模式的思想根源是(開閉)基本原則的宏觀運用,本質(zhì)上是沒有任何模式的,發(fā)現(xiàn)模式的人永遠是大師,而死守模式的人,最多只能是一個工匠。模式不僅僅是包容變化,它們還是變化之間的(關(guān)聯(lián))o系統(tǒng)中為其他模式確定場景的一個或兩個模式,這個模式將對其他模式能做的事進行(約束)。通常情況下,當一個模式使用另一個模式時,看起來被使用模式是在使用模式的(場景)之中的。系統(tǒng)中的一個模式經(jīng)常通過為系統(tǒng)中的其他模式提供(場景)與其他模式相關(guān)聯(lián)。三.判斷識別可能性不等于必須跟著可能性走。對認為一個實際不會出現(xiàn)的模式出現(xiàn)會起反作用。錯對象適配器模式是依賴倒轉(zhuǎn)原則的典型應用。錯通過在問題領(lǐng)域中使用模式,可以用一種不同的方式來看待問題。對當有一個涉及創(chuàng)建對象的設計模式時,這些對象為這個模式提供場景。對四?名詞解釋1.場景一些事物存在或發(fā)生的相互關(guān)聯(lián)的狀態(tài)。CVA共同點/變化點分析場景原則當有一個涉及創(chuàng)建對象的設計模式時,這些對象為這個模式提供場景。公開接口多態(tài)五?簡答題考慮場景時使用的一條原則是什么?考慮在系統(tǒng)中需要什么,然后再關(guān)心如何實現(xiàn)它?這也符合Alexander的場景原則:當有一個涉及創(chuàng)建對象的設計模式時,這些對象為這個模式提供場景.用模式的方法思考的步驟是什么?發(fā)現(xiàn)在問題領(lǐng)域中擁有的模式.這些是需要分析的模式;對于這些需要分析的模式,做下列工作:&挑出為其他模式提供最多場景的模式。b.在我的概念性最高的設計中使用這個模式?c?識別任何可能已經(jīng)出現(xiàn)的附加模式?將它們添加到“需要分析的模式中”?丘對于需要分析而還未分析的模式,至復上述過程;按照需要將細節(jié)添加到設計中?擴展方法和類定義.3?場景和被使用模式之間有什么關(guān)聯(lián)?通常情況下,當一個模式使用另一個模式時,看起來被使用模式是在使用模式的場景之中的.這條規(guī)則也可能有例外,但是看起在大多數(shù)時候它都是有效的.4.什么是“最高模式”?指系統(tǒng)中為其他模式建立背景的一兩個模式.這個模式將約束其他模式的行為。為一個龐大的工程的CAD/CAM系統(tǒng)提供支持的基本需求是什么?創(chuàng)建一個計算機程序,它能讀取一個CAD/CAM數(shù)據(jù)集并從中提取部件,一個現(xiàn)有的專家系統(tǒng)需要這些部件才能進行智能設計?這個系統(tǒng)應該向CAD/CAM系統(tǒng)屏蔽專家系統(tǒng).復雜的是CAD/CAM系統(tǒng)正處于變化之中?可能有CAD/CAM系統(tǒng)的多個潛在版本存在,而專家系統(tǒng)需要擁有它們的接口.六?應用題在CAD/CAM問題中,AbstractFactory模式被排除在“最高”模式之外,請舉例說明為什么?使用AbstractFactory模式的根本理由在于:如果有一個VI系統(tǒng)或者V2系統(tǒng),需要確保所有的實現(xiàn)對象都是VI類型或者V2類型的,但是Model對象本身已經(jīng)知道這一點.如果其他對象可以很容易地封裝創(chuàng)建規(guī)則,就沒有必要再實現(xiàn)一個模式?之所以將AbstractFactory模式保留在模式集合中,是因為第一次解決這個問題時,存在AbstractFactory模式。這也說明了,認為存在一個其實并不存在的模式,未必會有什么副作用?第13章設計模式的原則和策略—?選擇Open-Close原則的含義是一個軟件實體()。A.應當對擴展開放,對修改關(guān)閉.B.應當對修改開放,對擴展關(guān)閉C?應當對繼承開放,對修改關(guān)閉D?以上都不對典型情況下,()模式不包容變化。A>BridgeB.AbstractFactoryC.AdapterD.Facade下列屬于設計模式基本原則的是()oA繼承B.封裝C.開放関閉D都不是常用的設計模式可分為O。A創(chuàng)建型.結(jié)構(gòu)型和行為型B對象型.結(jié)構(gòu)型和行為型C過程型.創(chuàng)建型和結(jié)構(gòu)型D抽彖型.接口型和實現(xiàn)型以下哪一條不屬于設計模式的基本原則()oA開放-封閉原則。B根據(jù)場景進行設計的原則。C優(yōu)先使用繼承的原則?D包容變化的原則。二填空設計模式基本原則包括:開閉原則,(根據(jù)場景進行設計的原則),包容變化原則。最基本的UML圖是(類圖)。它不僅描述了類,而且說明了類之間的關(guān)系。模塊,方法和類應該對擴展是開放的,而對更改是(封閉)的。Alexander告訴我們要從(場景)進行設計,在設計我們的片段出現(xiàn)的細節(jié)之前先創(chuàng)建整體視圖。Bridge模式不僅僅對抽象部分和實現(xiàn)部分的變化進行定義和包容,而且還定義了兩個變化之間的(關(guān)聯(lián))。三.判斷抽象不應該依賴于細節(jié),細節(jié)應當依賴于抽象。錯大多數(shù)設計模式還讓軟件更具有可修改性。對Open-Close原則的含義是一個軟件實體應當對擴展開放,對修改關(guān)閉。對常用的設計模式可分為過程型、創(chuàng)建型和結(jié)構(gòu)型。錯Adapter模式和Fagde模式總是在別的什么東西創(chuàng)造的場景中被定義。錯四?名詞解釋開放-封閉原則模塊,方法和類應該對擴展是開放的,而對更改是封閉的.超類一個類,其他的類派生自它,包含主要屬性的定義,以及所有派生類都將使用(并且可能重裁)的方法的定義.屬性與一個對象相關(guān)聯(lián)的數(shù)據(jù)4?成員類的數(shù)據(jù)和方法方法與對象相關(guān)聯(lián)的函數(shù)五.簡答題什么是開-閉原則?模塊,方法和類應該對擴展是開放的,而對更改是封閉的.換句話說,我們必須將我們的軟件設計成這樣我們可以在不修改代碼的前提下對我們的軟件進行擴展.?那些因素決定了用哪種方案來實現(xiàn)AbstractFactory模式?未裱化的可能性;“不修改當前系統(tǒng)”的重要性;誰來控制將被創(chuàng)建的對象系列(是我們還是其他的開發(fā)組);使用的編程語言;數(shù)據(jù)庫或配置文件的可用性?3?按照模式進行設計的策略是什么?1?開放苗閉的原則2?從場景進行設計3.在類中包容變化?請舉例說明如何根據(jù)模式為其他的模式創(chuàng)造場景來選擇模式。比如,Bridge-Facade使用Facade模式來簡化VI系統(tǒng)的接口,Bridge模式的實現(xiàn)部分之一使用Facade模式所創(chuàng)建的新接口?因此Bridge模式為Facade模式創(chuàng)造了場景?為什么說Bridge是包容變化原則的一個精彩的范例?Bridge模式中的實現(xiàn)部分各不相同,但都可以通過一個通用接口被訪問?系統(tǒng)可以接納新的實現(xiàn)部分,只要它也使用這個通用接口來實現(xiàn)。六?應用題在本書的應用案例中,為什么認為Bridge模式高于Adapter模式?請舉例說明。Bridge模式的應用情景是在概念的抽象有變化及其實現(xiàn)方式有多個。而Adapter模式的應用情景是原有對彖的接口和需耍的接口有差別。而大多數(shù)情景下Bridge模式是作為Adapter模式的背景。也就是Bridge是Adapter的“最高模式”,在用Bridge模式封裝實現(xiàn)時,大多數(shù)的實現(xiàn)并不可以派生自相同的基類,這時Adapter模式就可以派上用場了。設計模式應遵循的原則有哪些?請舉例分別對它們進行解釋?1?開放譜閉的原則2從場景進行設計3.在類中包容變化.第14章Strategy(策略)模式—?選擇下面的類圖表示的是哪個設計模式?()A裝飾模式(Decorator)B策略模式(Strategy)C橋接模式(Bridge)D觀察者模式(Observer)ContextStrateKy-sinitegy:Stnitcg>*?<ontextlntcrtact<)-Algonthfnlntcrtace()111CuncrctcStratqoAConcrctcStrateg)BConcrctcStratcxy<'Strateg\^\lgonthinIntCTt3€C(I;Algonthmlntertacd)*/\lgorithmintrrtucc()?Algorithmlntrriacc()定義一系列的算法,把它們一個個封裝起來,并且使它們可相互替換。這句話是對哪種模式的描述()。A觀察者模式(Observer)B橋接模式(Bridge)C適配器模式(Adapter)D策略模式(Strategy)下面屬于行為模式的是()<>A抽象工廠模式(AbstractFactory)B適配器模式(Adapter)策略模式(Strategy〉D外觀模式(Facade)策略模式針對一組算法,將每一個算法封裝到具有()接口的獨立的類中,從而使得它們可以相互替換。A.不同B?—樣C共同D都不是Strategy(策略)模式的意圖是:()人定義一系列的算法,把它們一個個的封裝起來,并且使它們可相互替換.B.為一個對象動態(tài)連接附加的職責。C?你希望只擁有一個對象,但不用全局對彖來控制對象的實例化。在對象之間定義一種一對多的依賴關(guān)系,這樣當一個對彖的狀態(tài)改變時,所有依賴于它的對象都將得到通知并自動更新。作者在書中稱“分析癱瘓”為()。A因為問題的復雜性導致分析失敗。B因為問題的復雜性導致分析無法繼續(xù)進行。C過度分析或過度設計。D錯誤分析引起的后果。作者在《設計模式》中考慮變化的設計方式應遵循的原則中,哪一條是錯誤的()oA針對接口進行編程,而不是針對實現(xiàn)編程。B優(yōu)先使用對象組合,而不是繼承。C對需求中可能變化的部分,應重新設計.D在不引起重新設計的前提下,對變化的概念進行封裝。以下敘述不正確的是()oAswitch語句可能導致“分支蔓延”。BC++中的函數(shù)指針和C#中的委托都可以用來將代碼隱藏在精巧.緊湊.內(nèi)聚的函數(shù)中。C使用繼承可以實現(xiàn)復用。D作者認為復用是程序開發(fā)中最重要的考慮因素.對繼承層次太深可能導致的問題的敘述不正確的是()。A繼承層次太深導致緊內(nèi)聚.B繼承層次太深導致弱內(nèi)聚。C繼承層次太深導致緊耦合。D繼承層次太深會產(chǎn)生冗余,并使測試困難。Strategy模式應遵循的原則中不正確的是()。A對彖都具有職責。B職責不同的具體實現(xiàn)是通過多態(tài)的使用完成的。C概念上相同的算法具有多個不同的實現(xiàn),需要進行管理。D優(yōu)先使用組合而不是繼承。二填空(Strategy模式)模式是一種定義一系列算法的方法。UML是一種用來創(chuàng)建(軟件模型)的圖像語言。最基本的UML圖是類圖。它不僅(描述)了類,而且說明了類之間的關(guān)系。Strategy模式還簡化了單元測試,因為每個算法都有自己的類,可以通過自己的(接口)單獨測試。Strategy意圖是定義一系列的算法,把它們一個個(封裝)起來,并且使它們可相互替換。Strategy模式要求所(封裝)的算法應處在使用它們的類之外。通過從一個抽彖類(派生)執(zhí)行算法的所有不同方式,主模塊無需再操心實際使用的是哪一個算法。在Strategy模式的使用中,將某個(變化的行為)從使用它的類中移出來,這種過程與數(shù)據(jù)庫中的規(guī)范化過程非常相似。將(算法)封裝在一個抽象類中。而且在某一時刻能夠互換地使用其中之一的方法,這就是Strategy模式的本質(zhì)。Strategy模式是一種定義(一系列)算法的方法。三.判斷Strategy模式使得算法可獨立于使用它的客戶而變化。對從Strategy模式的概念上來說,所有算法都做相同的工作,且擁有相同的實現(xiàn)。錯Strategy(策略)模式是一種定義算法家族的方法。對Strategy(策略)模式讓我們可以將這些規(guī)則封裝在一個抽象類中,然后擁有一系列的抽象派生類。錯Strategy(策略)模式的本質(zhì)是在一個抽彖類中封裝一個算法并交替使用這些算法。對在設計模式設計中,作者提倡對變化進行封裝在一個類中,再通過對它進行繼承的原則。錯當使用不同的規(guī)則處理算法,就可以釆用Strategy模式。錯Strategy模式可以用不同的方式調(diào)用所有的算法。錯Strategy模式簡化了單元測試,因為每個算法都有自己的類,可以通過接口進行單獨測試。對在算法設計時,采用Strategy模式會增加大量的類。對四.名詞解釋Strategy(策略)模式定義一系列的算法,把它們一個個封裝起來,并且使它們可相互替換。這個模式使算法可獨立于使用它的客戶而變化.解耦'解耦在軟件里就是要讓兩個對象之間保持松耦合的關(guān)系,這種關(guān)系應具有穩(wěn)定、標準等特性,其作用是限制了對象修改所影響的范圍.聚集聚集表示類之間的關(guān)系是整體與部分的關(guān)系O構(gòu)造函數(shù)五.簡答題Strategy模式的意圖是什么嗎?它有哪些效果?意圖是讓你可以使用不同的業(yè)務規(guī)則或算法——取決于它們出場的場景?效果有:Strategy(策略)模式定義了一系列的算法;switch語句或條件語句得到了避免;你必須以相同的方式調(diào)用所有的算法(它們必須擁有相同的接口)CaicreteStrategies與Coitext之間的交互可能需要在Ccaitext中加入getState之類的方法。Strategy(策略)模式是建立在哪些原則的基礎(chǔ)上?主要建立在:對象擁有責任;這些責任的不同的特定實現(xiàn)通過使用多態(tài)來表現(xiàn);需要將幾個不同的實現(xiàn)按照——概念上相同的算法來管理;一個好的設計經(jīng)驗:將問題領(lǐng)域中發(fā)生的行為彼此分離也就是說,使它們解耦。這讓改變對某一行為負責的類,而不會對其他行為產(chǎn)生不好的影響。Strategy(策略)模式對問題的解決方案是什么?以及如何實現(xiàn)?解決方案是:將算法的選擇和算法的實現(xiàn)相分離.讓客戶可以基于場景做出選擇。實現(xiàn):讓使用算法的類包含一個抽象類,抽象類中有一個抽象方法指定如何調(diào)用算法.每個派生類根據(jù)需要實現(xiàn)算法.4按照四人團的說法,Strategy策略模式的基本思想是什么?定義一系列的算法,把它們一個個封裝起來,并且使它們可相互替換,使算法可獨立于使用它的客戶而變化.六?應用題舉例說出策略模式(Strategy)的應用場景,并且畫出該模式的類圖。Strategy模式是一種定義一系列算法的方法?概念上來看,所有這些算法完成的都是相同的工作,只是實現(xiàn)不同.比如,在一個國際電子商務系統(tǒng)中,不同的國家需要使用不同的稅額計算算法。通過Strategy模式,可以將這些規(guī)則封裝在一個抽象類中,然后派生出一系列的具體類?在一個國際電子零售系統(tǒng)中,需要考慮為不同的國家的消費者的定單計算稅費問題,請用模式的方法考慮如何解決該問題。通過Strategy模式,可以將這些規(guī)則封裝在一個抽象類中,然后派生出一系列的具體類?通過從一個抽象派生類執(zhí)行算法的所有不同方式,主模塊就無需再操心實際使用的是哪一個,這樣能夠允許發(fā)生新的變化.第15章Decorator黴飾)模式—?選擇若系統(tǒng)中的某子模塊需要為其他模塊()提供訪問不同數(shù)據(jù)庫系統(tǒng)的功能,這些數(shù)據(jù)庫系統(tǒng)提供的訪問接口有一定的差異,但訪問過程卻都是相同的,例如,先連接數(shù)據(jù)庫,在打開數(shù)據(jù)庫,最后對數(shù)據(jù)庫進行査詢,設計模式可抽象岀相同的數(shù)據(jù)庫訪問過程。A.外觀B裝飾C單間D模板方法Decorator模式的描述正確的是()。A?該模式的意圖是動態(tài)地給一個對象添加一些額外的職責。就增加功能來說,該模式相比生成子類不夠靈活。B?適用于在不影響其他對象的情況下,以動態(tài).透明的方式給單個對象添加職貴。C?該模式的意圖是將對象組合成樹形結(jié)構(gòu)以表示“部分-整體”的層次結(jié)構(gòu)。該模式使得用戶對單個對彖和組合對象的使用具有一致性。D該模式適用性是你想表示對象的部分-整體層次結(jié)構(gòu)。下面屬于結(jié)構(gòu)模式的有()<>A.策略模式(Strategies)B.單例模式(Singleton)C.抽彖工廠模式(AbstractFactory)D.裝飾模式(Decorator)下面的類圖表示的是哪個設計模式?()<>A裝飾模式(Decorator)B適配器模式(Adapter)C策略模式(Strategies)D橋接模式(Bridge)Decorator(裝飾)模式的意圖是:()°A?定義一系列的算法,把它們一個個的封裝起來,并且使它們可相互替換。B?為一個對象動態(tài)連接附加的職責.C?你希望只擁有一個對象,但不用全局對彖來控制對彖的實例化。在對象之間定義一種一對多的依賴關(guān)系,這樣當一個對彖的狀態(tài)改變時,所有依賴于它的對象都將得到通知并自動更新。二填空Decorator模式將一個功能鏈的(動態(tài)構(gòu)建)與使用功能的客戶分離開來。Decorator模式對象在被裝飾功能之前或者之后或者前兩者同時執(zhí)行自己的(附加功能)。每個Decorator對象都對其后的對象(封裝)自己的新功能。就增加功能來說,Decorator模式相比生成子類更為(靈活)<.Decorator模式是為現(xiàn)有的功能(動態(tài))添加附加功能的一種方法。三?判斷Decorator(裝飾)模式的意圖是為一個對彖連接附加的職責。錯每個Decorator對象在被裝飾的功能之前或之后執(zhí)行自己的附加功能。對Decorator(裝飾)模式適用性是表示對象的部分-整體層次結(jié)構(gòu)。錯Decorator(裝飾)模式的意圖是動態(tài)地給一個對象添加一些額外的職責。就增加功能來說,該模式相比生成子類不夠靈活。錯Decorator(裝飾)模式是為現(xiàn)有的功能動態(tài)添加附加功能的一種方法。對四?名詞解釋Decorator(裝飾)模式動態(tài)地給一個對象添加一些額外的職責?Decorator(裝飾)鏈始于一個Conponet對象,每個裝飾者對象后面緊跟著另一個裝飾者對象,而對象鏈終于COTicreteCompcHiet對象。類圖是顯示了模型的靜態(tài)結(jié)構(gòu),特別是模型中存在的類.類的內(nèi)部結(jié)構(gòu)以及它們與其他類的關(guān)系等。交互圖以對象為中心以類和繼承為構(gòu)造機制,充分利用接口和多態(tài)提供靈活性?來認識.理解.刻劃客觀世界和設計.構(gòu)建相應的軟件系統(tǒng)?五?簡答題每個Decorator對象封裝的是什么?每個Decorator對象都對其后的對象封裝自己的新功能。每個Decorator對象在被裝飾的功能之前或之后執(zhí)行自己的附加功能。Decorator(裝飾)模式的效果是什么?被添加的功能屬于小的對象。好處是可以在ConcreteCoiDpkt對象的功能之前或之后動態(tài)添加功能.雖然_個裝飾者可以在被裝飾者之前或之后添加功能,但對象鏈總是以ConcreteCompcment對象結(jié)束?Decorator(裝飾)模式的解決方案是什么?如何實現(xiàn)?解決方案是允許擴展一個對象的功能,而不必借助于子類型化?實現(xiàn):創(chuàng)建一個抽象類來表示原始的類和要添加到這個類上的新功能。在裝飾者類中,將“對新功能的調(diào)用”放在“對緊隨其后對象的調(diào)用”之前或之后,以獲得正確的順序。畫出Decorator(裝飾)模式的類圖。六?應用題1?請結(jié)合實際應用說明Decorator模式是怎樣對問題按功能進行分解?Decorator模式并不通過一個控制方法控制新増功能,而是建議以需要的正確順序?qū)⑺韫δ艽?lián)起來,進行控制.Decorator模式將這樣一個功能鏈的動態(tài)構(gòu)建與使用功能的客戶分離開來?而且還將功能鏈的構(gòu)建與鏈組件分離開來.這樣就能靈活使用這些組件,比如,表頭,頁腳和SalesTicket分離開來.Decorator鏈有什么作用?它是怎樣形成的,請舉一個例子說明?第16章Singleton(單件)和Double-CheckedLocking(雙重檢査鎖定)模式—?選新Singleton模式適用于()。A當類有多個實例而且客戶可以從一個眾所周知訪問點訪問它時。B當這個唯一實例應該是通過子類化可擴展的,并且客戶應該無需更改代碼就能使用一個擴展的實例時?C當構(gòu)造過程必須允許被構(gòu)造的對象有不同的表示時。D生成一批對彖時。保證一個類僅有一個實例,并提供一個訪問它的全局訪問點。這句話是對下列哪種模式的描述()。A.外觀模式(Facade)B策略模式(Strategies)適配器模式(Adapter)單例模式(Singleton)單例模式的作用是()<>A.當不能采用生成子類的方法進行擴充時,動態(tài)地給一個對象添加一些額外的功能。B.為了系統(tǒng)中的一組功能調(diào)用提供一個一致的接口,這個接口使得這一子系統(tǒng)更加容易使用。C.保證一個類僅有一個實例,并提供一個訪問他的全局訪問點。D.單例模式僅僅應用于多線程應用程序中。下面不屬于結(jié)構(gòu)模式的有()。幾適配器模式(Adapter)B.單例模式(Singleton)橋接模式(Bridge)D.裝飾模式(Decorator)單例模式(Singleton)(裝飾)模式的意圖是:()。幾定義一系列的算法,把它們一個個的封裝起來,并且使它們可相互替換。B.為一個對象動態(tài)連接附加的職責。C?你希望只擁有一個對象,但不用全局對象來控制對象的實例化?在對象之間定義一種一對多的依賴關(guān)系,這樣當一個對象的狀態(tài)改變時,所有依賴于它的對象都將得到通知并自動更新。二填空(單例)模式確保某一個類僅有一個實例,并自行實例化向整個系統(tǒng)提供這個實例。(單例)模式只應在有真正的“單一實例”的需求時才可使用。單例模式屬于(創(chuàng)建型)模式。Singleton(單件)模式和Double-CheckedLocking模式都用以確保一個特定的類只有一個對象被(實例化)。Singleton(單件)模式用于單線程應用程序,Double-CheckedLocking模式用于(多線程)應用程序。三.判斷單例模式確保某一個類具有多個實例,并自行實例化向整個系統(tǒng)提供這個實例。錯Singleton模式適用于當類只能有一個實例,而且客戶可以從一個公共的訪問點訪問它。對Double-CheckedLocking模式既可以用于單線程又能應用于多線程應用程序。錯Singleton(單件)模式的工作方式是擁有一個特定的方法,這個方法被用于實例化需要的對象。對Singleton(單件)模式屬于結(jié)構(gòu)性模式。錯四?名詞解釋Singleton(單件)模式保證一個類僅有一個實例,并提供一個訪問它的全局訪問點.Double-CheckedLocking模式是singleton的多線程版本?多線程在單個程序中同時運行多個線程完成不同的工作,稱為多線程.封裝五?簡答題1?Singleton(單件)模式怎樣工作?Singleton(單件)模式的工作方式是:擁有一個特定的方法,這個方法被用于實例化需要的對象。當這個方法被調(diào)用時,它檢査這個對象是否己經(jīng)被實例化.如果對象己經(jīng)被實例化,這個方法僅僅返回這個對象的一個引用.如果對象尚未實例化,這個方法將對象實例化并返回這個新的實例的引用.為了確保這是創(chuàng)建這個類型的對象的惟一途徑,在這個類中將構(gòu)造函數(shù)定義為protected或private。Singleton(單件)模式和Double-CheckedLocking模式之間有什么區(qū)別?Singletai(單件)模式用于單線程應用程序,而Double-CheckedLocking模式用于多線程應用程序。描述Singleton(單件)模式意圖以及效果?Singleton(單件)模式的意圖是你希望只擁有一個對象,但不用全局對象來控制對象的實例化?效果是客戶對象不需要關(guān)心是否已經(jīng)有Singleton的實例存在.這可以在Singleton內(nèi)部得到控制?Singleton(單件)模茂的用途是什么?它讓我們可以僅僅對對象進行一次實例化,而不要求客戶對象關(guān)心這個對象是否存在?六.應用題在一個多線程應用程序中,如果使用Singleton模式,試分析可能會出現(xiàn)哪些問題。出現(xiàn)A進程和B進程同時訪問某個對象的時候,發(fā)現(xiàn)它沒有實例化過,結(jié)果A.B進程分別將該類實例化一次,出現(xiàn)冗余對象的情況?這個情況并不多見,但是C++中出現(xiàn)了就是內(nèi)存泄露的重大問題。2?請說明Singleton模式的動機和解決方案,這種處理方案和對象處理自己的單一實例化是否矛盾,請給出你的看法?第17章Observer?察者)模式—?選擇在觀察者模式中,表述錯誤的是()。A?觀察者角色的更新是被動的。B.被觀察者可以通知觀察者進行更新C.觀察者可以改變被觀察者的狀態(tài),再由被觀察者通知所有觀察者依據(jù)被觀察者的狀態(tài)進行?D.以上表述全部錯誤。下面的類圖表示的是哪個設計模式?()。A策略模式(Strategies)B裝飾模式(Decorator)C橋接模式(Bridge)D觀察者模式(Observer)當我們想創(chuàng)建一個具體的對彖而又不希望指定具體的類時,可以使用()模式。A?創(chuàng)建型B.結(jié)構(gòu)型C行為型D.以上都可以下列模式中,屬于行為模式的是()。A?工廠模式B觀察者C適配器D以上都是Observer模式不適用于()。A當一個抽象模型存在兩個方面,其中一個方面依賴于另一方面,將這二者封裝在獨立的對彖中以使它們可以各自獨立的改變和復用。B當對一個對彖的改變需要同時改變其他對象,而不知道具體有多少個對象有待改變時。C當一個對象必須通知其它對彖,而它又不能假定其它對彖是誰,也就是說你不希望這些對彖是緊耦合的。D—個對象結(jié)構(gòu)包含很多類對象,它們有不同的接口,而想對這些對象實施一些依賴于其具體類的操作?下面的類圖表示的是哪個設計模式?()。A觀察者模式B單例模式C橋接模式D策略模式7.觀察者模式定義了一種()的依賴關(guān)系。A一對多C多對多B_對_D以上都有可能下列模式中,屬于行為模式的是()。A?外觀模式B觀察者模式C單例模式D橋接模式對觀察者模式,以下敘述不正確的是()oA必須找出所有希望獲得通知的對象?B所有的觀察者對象有相同的接口。C如果觀察者的類型相同,目標就可以輕易地通知它們。D在大多數(shù)情況下,觀察者負責了解自己觀察的是什么,目標需要知道有哪些觀察者依賴自己。對于觀察者模式,以下敘述正確的是()oA當對象之間存在依賴關(guān)系,就適宜采用觀察者模式。B如果對象之間的以來關(guān)系是固定的,采用觀察者模式會帶來負面影響.C如果需要得到某事件通知的對象列表是變化的,不適宜采用觀察者模式。D以上敘述皆不正確。二填空(觀察者)模式定義對象間的一種一對多的依賴關(guān)系,當一個對象的狀態(tài)發(fā)生改變時,所有依賴于它的對象都得到通知并自動更新。觀察者模式定義了一種(一對多)的依賴關(guān)系,讓多個觀察者對象同時監(jiān)聽某一個主題對彖。Observer(觀察者)模式是一個(行為)模式。當依賴關(guān)系固定(或兒乎固定)時,加入一個Observer模式可能只會增加(復雜性)。為了對所有Observer類型的對象實現(xiàn)Observer接口,有時候需要使用(Adapter)模式。如果系統(tǒng)在不同的情況下運行,或由不同的用戶運行,觀察者列表會不同,這時適宜用(Observer)模式。一個觀察者可能只需要處理事件的某些情況,在這種情況下,觀察者必須將額外的(通知)篩選掉。對觀察者模式,觀察者通常將觀察某個事件的責任交給(中心對象或Sfcject)。Subject類將實現(xiàn)一個(notify)方法來遍歷其Observer對彖列表,并調(diào)用每個Observer對彖的update方法。當Subject對彖有了已注冊的Observer對象,事件發(fā)生時,Subject對象通知Observer對彖將非常簡單。為此,每個Observer對象都要實現(xiàn)一個(update)方法。三.判斷創(chuàng)建型模式關(guān)注的是組織類和對象的常用方法。錯常用的設計模式可分為過程型、創(chuàng)建型和結(jié)構(gòu)型。錯當對象之間存在依賴關(guān)系時就應該使用Observer(觀察者)模式。錯當依賴關(guān)系固定(或幾乎固定)時,加入一個Observer(觀察者)模式可能只會增加復雜性。對一個Observer(觀察者)模式可能只需要處理事件的某種特定情況。對對觀察者模式,觸發(fā)事件的對象一一Subject對彖不需要知道觀察事件的所有對彖。對對觀察者模式,Subject不知道與哪種觀察者通信,Observer類封裝了各種特定的Observero對Observer對象有多種,但都從Subject對象收集信息,并收集相應的操作結(jié)果。錯Observer類包含了需要得到通知的對彖的概念,并為目標對彖提供一個通知Observer的公共接口。對對觀察者模式,要求所有的Observer負責將自己注冊到目標對象上。對四.名詞解釋Observer(觀察者)模式定義對象間的一種一對多的依賴關(guān)系,當一個對象的狀態(tài)發(fā)生改變時,所有依賴于它的對象都得到通知并被自動更新?結(jié)構(gòu)型模式將現(xiàn)存的對象結(jié)合在一起,處理接口,將實現(xiàn)與抽象類聯(lián)系起來。3?行為型模式提供一種顯得靈活(變化〉的行為,包容變化的模式。例如,strategy模式和observer模式?創(chuàng)建型模式創(chuàng)建或?qū)嵗瘜ο笪?簡答題GOF設計模式按照模式的目的可分為哪三類?其目的分別是什么?結(jié)構(gòu)型:將現(xiàn)存的對象結(jié)合在一起.行為型:提供一種顯得靈活(變化)行為。創(chuàng)建型:穿件或?qū)嵗瘜ο?。Observer模式的定義,它要解決什么樣的問題?Observer(觀察者)模式定義對象間的一種一對多的依賴關(guān)系,當一個對象的狀態(tài)發(fā)生改變時,所有依賴于它的對象都得到通知并被自動更新.解決的問題是當某個事件發(fā)生時,你需要向一系列對象發(fā)出通知,而這個對象的列表是不斷變化的。Observer(觀察者)模式的效果。效果是如果某些Observer只對全部事件的一個子集感興趣,那么Subject可能會告訴Observer它們不需要知道的事件.如果在Subject通知Observer之后,Observer又轉(zhuǎn)過來請求附加信息,就可能?I要額外的通信?Observer(觀察者)模式如何實現(xiàn)解決方案的?讓“希望知道某個事件何時發(fā)生”的對象(Observer〉將自己注冊到另一個“監(jiān)視事件發(fā)生或自己觸發(fā)事件”的對象(Subject)±o當事件發(fā)生時,Subject告訴Observer"你關(guān)心的事情已經(jīng)發(fā)生了”?為了能讓所有的觀察者型對象實現(xiàn)Observer接口,有時候需要使用Adapter模式。六?應用題給出Observer的定義以及它的意圖,舉一個例子說明該模式的適用場景,最后畫出它的類圖。定義對象間的一種一對多的依賴關(guān)系,當一個對象的狀態(tài)發(fā)生改變時,所有依賴于它的對象都得到通知并被自動更新?解決的問題是當某個事件發(fā)生時,你需要向一系列對象發(fā)出通知,而這個對象的列表是不斷變化的。例如,在Subject對象注冊了它的一個Observer對象,當事件發(fā)生時,Subject對象向Observer對象發(fā)出通知就非常簡單了?為了實現(xiàn)這一功能,每個Observer類都實現(xiàn)一個叫做updata的方法?Subject類這樣實現(xiàn)notify方法:堪歷自己的Observer對象列表,調(diào)用其中每個Observer對象的sdata方法。Updata方法應該包含處理事件的代碼。根據(jù)你的理解,請你談談結(jié)構(gòu)型和行為型模式的區(qū)別,并結(jié)合實際的應用舉例說明。結(jié)構(gòu)型模式的目的是將現(xiàn)存的對象結(jié)合在一起,用繪是處理接口,將實現(xiàn)與抽象類聯(lián)系起來。而行為型模式的目的是提供一種顯得靈活的行為,用途是包容變化的.例子:結(jié)構(gòu)型模式中的Bridge模式或Decorator模式與行為型模式中的Strategy模式的比較.第18章TemplateMethod(模板方法)模式—?選擇以下屬于行為對象模式的是()。A模板模式(TemplateMethod)B裝飾模式(Decorator)C橋接模式(Bridge)D丄廠方法模式(FactoryMethod)模板方法的作用是()<>A當不能采用生成子類的方法進行擴充時,動態(tài)地給一個對象添加一些額外的功能。B.為了系統(tǒng)中的一組功能調(diào)用提供一個一致的接口,這個接口使得這一子系統(tǒng)更加容易使用。C.保證一個類僅有一個實例,并提供一個訪問他的全局訪問點。D.在方法中定義算法的框架,而將算法中的一些操作步驟延遲到子類中實現(xiàn)。TemplateMethod(模版)模式的意圖是:()。幾定義一系列的算法,把它們一個個的封裝起來,并且使它們可相互替換。B?為一個對象動態(tài)連接附加的職責。C?你希望只擁有一個對象,但不用全局對彖來控制對象的實例化。D?定義一個操作中的骨架,而將一些步驟延遲到子類中。使得子類可以不改變一個算法的結(jié)構(gòu)即可重定義該算法的某些特定步驟。有關(guān)模板方法模式,以下敘述不正確的是()。A允許定義不同的子過程,同時維護基本過程的一致性。B將定義和操作相互分離.C創(chuàng)建一個抽象類,用抽象方法實現(xiàn)一個過程,這些抽象方法必須在子類中實現(xiàn)。D實現(xiàn)抽彖方法的子類的步驟可以獨立變化,并且這些步驟可以采用Strategy模式來實現(xiàn)。在釆用模板方法模式對系統(tǒng)連接不同數(shù)據(jù)庫(例如Oracle和SQLServer)的連接時,以下敘述不正確的是()。A盡管Oracle和SQLServer數(shù)據(jù)庫有不同的連接.査詢方法,但它們有相同的概念上的過程。B使用模板方法模式,可以在抽象類中捕捉共同點而在派生類中封裝不同點。C模板方法模式用于控制連接數(shù)據(jù)庫操作的一個序列的行為步驟。D可以采用通用的實現(xiàn)方法建立對不同數(shù)據(jù)庫的連接.二填空TemplateMethod模式準備一個抽象類,將部分邏輯以(具體方法)以及具體構(gòu)造子類的形式實現(xiàn),然后聲明一些抽象方法來迫使子類實現(xiàn)剩余的邏輯。TemplateMethod(模版)模式是用以幫助從不同的步驟中抽象出一個(通過的)過程模式。TemplateMethod(模版)模式讓我們可以在抽彖類中捕捉共同點而在(派生類)中封裝不同點。當遇到一個心得數(shù)據(jù)庫時,TemplateMethod(模版)模式提供了一個(樣板)讓我們填充。我們創(chuàng)建一個新的派生類,并根據(jù)新的數(shù)據(jù)庫的要求實現(xiàn)特定的步驟。三.TemplateMethod三.TemplateMethod(模版)模式只是在一起工作的Strategies模式的集合。錯TemplateMethod(模版)模式適用于有兒個相同且概念上相似的步驟存在的情況。錯3.TemplateMethod(模版)模式被用于控制一個序列的行為步驟3.TemplateMethod(模版)模式被用于控制一個序列的行為步驟,這些步驟通常是相同的。錯TemplateMethod是用以幫助從不同的步驟中抽象出一個通用的過程的模式。對TemplateMethod(模版)模式使得子類可以改變一個算法的結(jié)構(gòu)即可重定義該算
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 自適應天線技術(shù)在智能Home設備中的創(chuàng)新應用-洞察闡釋
- 跨平臺屬性選擇器的兼容性分析-洞察闡釋
- 銻礦選礦工藝的經(jīng)濟性評價與決策支持系統(tǒng)研究-洞察闡釋
- 高層航空燈管理制度
- 高校隔離點管理制度
- 魚肉加工間管理制度
- 龍門吊設備管理制度
- 工業(yè)廢水處理與節(jié)能減排
- 工業(yè)機器人技術(shù)在智能制造中的運用
- 工業(yè)廢水處理技術(shù)及實踐案例分析
- 2025年四川省成都市中考語文真題(解析版)
- 北京市2024年高招本科普通批錄取投檔線
- 2025年黑龍江、吉林、遼寧、內(nèi)蒙古高考物理真題(解析版)
- 民航招飛初選試題及答案
- 2025年電子商務法律法規(guī)考試試題及答案
- 國開2025年《資源與運營管理》形考任務1-4答案
- 2025年安全生產(chǎn)考試題庫(危險化學品安全)危險化學品安全操作規(guī)范應用試題
- T/CIQA 74-2024人工智能(AI)鑒定通用規(guī)范
- 美容院洗滌協(xié)議書
- 學習解讀《水利水電建設工程驗收規(guī)程》SLT223-2025課件
- 2025甘肅省農(nóng)墾集團有限責任公司招聘生產(chǎn)技術(shù)人員145人筆試參考題庫附帶答案詳解
評論
0/150
提交評論