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

下載本文檔

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

文檔簡(jiǎn)介

1、三、題目預(yù)測(cè) 填空題: 1.請(qǐng)從外觀(guān)、組合、工廠(chǎng)方法、模板方法、觀(guān)察者、單件、抽象工廠(chǎng)、命令、迭代器、代理、適配器模式中選擇7種填入下列的空缺中。P610 1) 工廠(chǎng)方法 模式中,父類(lèi)負(fù)責(zé)定義創(chuàng)建對(duì)象的公共接口,子類(lèi)決定要?jiǎng)?chuàng)建的具體類(lèi)是哪一個(gè)。2) 抽象工廠(chǎng) 模式提供一系列相關(guān)或相互依賴(lài)對(duì)象的接口而無(wú)需指定它們具體的類(lèi)。3) 單 件 模式確保某一個(gè)類(lèi)僅有一個(gè)實(shí)例,并自行實(shí)例化并向整個(gè)系統(tǒng)提供這個(gè)實(shí)例。4) 組 合 模式將對(duì)象組合成樹(shù)形結(jié)構(gòu)以表示“部分-整體”的層次結(jié)構(gòu)。使得用戶(hù)對(duì)單個(gè)對(duì)象和組合對(duì)象的使用具有一致性。5) 外 觀(guān) 模式定義了一個(gè)高層接口,這個(gè)接口使得這一子系統(tǒng)更加容易使用,為子系

2、統(tǒng)中的一組接口提供一個(gè)一致的界面,簡(jiǎn)化了一群類(lèi)的接口。6) 觀(guān)察者 模式定義對(duì)象間的一種一對(duì)多的依賴(lài)關(guān)系,當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生改變時(shí), 所有依賴(lài)于它的對(duì)象都得到通知并被自動(dòng)更新,也就是讓對(duì)象能在狀態(tài)改變時(shí)被通知。7) 模 板 模MVC模型式定義一個(gè)操作中的算法的骨架,而將一些步驟延遲到子類(lèi)中。8) 迭代器模式在對(duì)象的集合之中游走,而不暴露集合的實(shí)現(xiàn)。9) 代理模式包裝對(duì)象,以控制對(duì)比對(duì)象的訪(fǎng)問(wèn)。10) 適配器模式封裝對(duì)象,并提供不同的接口。2.工廠(chǎng)模式分為(簡(jiǎn)單工廠(chǎng)),(工廠(chǎng)方法),(抽象工廠(chǎng))三種類(lèi)型。3.適配器模式,分為類(lèi)的適配器和對(duì)象的適配器兩種實(shí)現(xiàn)。其中類(lèi)的適配器采用的是(繼承)關(guān)系,

3、而對(duì)象適配器采用的是(組合聚合)關(guān)系。4.設(shè)計(jì)模式的基本要素有(名字 ),(意圖 ),(問(wèn)題 ),( 解決方案 ),(參與者與協(xié)作者 ),( 實(shí)現(xiàn)),(一般性結(jié)構(gòu))。5.MVC模型的基本工作原理是基于(觀(guān)察者)模式,實(shí)現(xiàn)是基于(命令)模式6.面向?qū)ο蟮牧鶙l基本原則包括:開(kāi)閉原則,里式代換原則,合成聚合原則以及(依賴(lài)倒轉(zhuǎn)),(迪米特法則)(接口隔離)。7當(dāng)我們想用不同的請(qǐng)求對(duì)客戶(hù)進(jìn)行參數(shù)化時(shí),可以使用( 命令 )模式。8當(dāng)我們想封裝不同算法并使它們可相互替換時(shí),可以使用(策略)模式。9. 每一個(gè)設(shè)計(jì)模式都集中于一個(gè)特定的(設(shè)計(jì)問(wèn)題),描述了(相互通信的對(duì)象)或者(類(lèi))以及(解決方案)和(解決效果

4、 )。10設(shè)計(jì)模式中應(yīng)優(yōu)先使用(對(duì)象組合)而不是(類(lèi)繼承)。11. 面向?qū)ο螅∣O)的基礎(chǔ)包括(抽象)(封裝)(多態(tài))(繼承)。12.(狀態(tài)模式)允許一個(gè)對(duì)象基于內(nèi)部狀態(tài)而擁有不同的行為。13.模式不是代碼,而是(針對(duì)設(shè)計(jì)問(wèn)題)的通用解決方案。14.觀(guān)察者模式定義了對(duì)象之間(一對(duì)多)的關(guān)系。15.觀(guān)察者和可觀(guān)察者之間用(松耦合方式)結(jié)合。16設(shè)計(jì)模式的兩大主題是:(對(duì)象組合) 和 (類(lèi)繼承)的討論。 17.(組合)和(委托)可用于運(yùn)行時(shí)動(dòng)態(tài)地加上新的行為。18.工廠(chǎng)方法使用(繼承)把對(duì)象的創(chuàng)建委托給子類(lèi),子類(lèi)實(shí)現(xiàn)了工廠(chǎng)方法來(lái)創(chuàng)建對(duì)象。19.抽象工廠(chǎng)方法使用(對(duì)象組合)使對(duì)象的創(chuàng)建被實(shí)現(xiàn)在工廠(chǎng)接

5、口所暴露出來(lái)的方法中。20.在Java中實(shí)現(xiàn)單件模式,需要私有的(構(gòu)造器)(一個(gè)靜態(tài)方法)和(一個(gè)靜態(tài)變量)21命令模式將(發(fā)出請(qǐng)求)的對(duì)象和(執(zhí)行請(qǐng)求)的對(duì)象解耦。22.當(dāng)需要一個(gè)現(xiàn)有的類(lèi)而其接口不符合需求時(shí),可使用(適配器)模式。23.適配器模式的兩種模式是(對(duì)象適配器)和(類(lèi)適配器)。24.(模板方法)定義了算法的步驟,把這些步驟的實(shí)現(xiàn)延遲到了子類(lèi)。25.(代理模式)為另一個(gè)對(duì)象提供代表,以便控制客戶(hù)對(duì)對(duì)象的訪(fǎng)問(wèn)。26.裝飾著模式為對(duì)象加上(行為)而代理模式則是(控制訪(fǎng)問(wèn))。27.開(kāi)閉原則:(擴(kuò)展開(kāi)放)(修改關(guān)閉)。28.代理模式分為哪4種:(虛擬代理)(遠(yuǎn)程代理)(安全代理)(聰明引用

6、)。選擇題 1設(shè)計(jì)模式具有的優(yōu)點(diǎn)。(A)A. 適應(yīng)需求變化 B.程序易于理解C. 減少開(kāi)發(fā)過(guò)程中的代碼開(kāi)發(fā)工作量 D.簡(jiǎn)化軟件系統(tǒng)的設(shè)計(jì)2. 若系統(tǒng)中的某子模塊需要為其它模塊提供訪(fǎng)問(wèn)不同數(shù)據(jù)庫(kù)系統(tǒng)(Oracle、SQL Server、DB2 UDB 等)的功能,這些數(shù)據(jù)庫(kù)系統(tǒng)提供的訪(fǎng)問(wèn)接口有一定的差異,但訪(fǎng)問(wèn)過(guò)程卻都是相同的,例如,先連接數(shù)據(jù)庫(kù),再打開(kāi)數(shù)據(jù)庫(kù),最后對(duì)數(shù)據(jù)進(jìn)行查詢(xún),( D ) 設(shè)計(jì)模式可抽象出相同的數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)過(guò)程;A. 外觀(guān) B. 裝飾 C. 單件 D. 模板方法3 系統(tǒng)中的文本顯示類(lèi)(TextView)和圖片顯示類(lèi)(PictureView)都繼承了組件類(lèi)(Component),

7、分別顯示文本和圖片內(nèi)容,現(xiàn)需要構(gòu)造帶有滾動(dòng)條、或者帶有黑色邊框、或者既有滾動(dòng)條又有黑色邊框的文本顯示控件和圖片顯示控件,但希望最多只增加三個(gè)類(lèi),( B )設(shè)計(jì)模式可以實(shí)現(xiàn)該目的。A. 外觀(guān) B. 裝飾 C.單件 D. 模板方法4. 下面的類(lèi)圖表示的是哪個(gè)模式?( A )A、抽象工廠(chǎng)模式(Abstract Factory)B、工廠(chǎng)方法模式(Factory Method)C、命令模式(Command)D、責(zé)任鏈模式(Chain of Responsibility)5. 下面的類(lèi)圖表示的是哪個(gè)設(shè)計(jì)模式?( B )A、代理模式(Proxy) B、裝飾模式(Decorator)C、橋接模式(Bridge

8、) D、觀(guān)察者模式(Observer)6.下面的類(lèi)圖表示的是哪個(gè)模式?( B )A、代理模式(Proxy) B、外觀(guān)模式(Facade)C、適配器模式(Adapter) D、橋接模式(Bridge)7.下面的類(lèi)圖表明了哪個(gè)模式?( D )A、責(zé)任鏈模式(Chain of Responsibility) B、命令模式(Command)C、備忘錄模式 (Memento) D、工廠(chǎng)方法模式(Factory Method)8. 下面的類(lèi)圖表示的是哪個(gè)設(shè)計(jì)模式?( D )A、模板方法模式(Template Method) B、命令模式 (Command)C、單例模式(Singleton) D、狀態(tài)模式(

9、State)9. 下面的類(lèi)圖表示的是哪個(gè)設(shè)計(jì)模式?( C )A、模板方法模式(Template Method) B、命令模式 (Command)C、單例模式(Singleton) D、狀態(tài)模式(State)10.當(dāng)我們想創(chuàng)建一個(gè)具體的對(duì)象而又不希望指定具體的類(lèi)時(shí),可以使用( A)模式。A.創(chuàng)建型 B.結(jié)構(gòu)型 C行為型 D.以上都可以11、設(shè)計(jì)模式的兩大主題是( d )A.系統(tǒng)的維護(hù)與開(kāi)發(fā) B 對(duì)象組合與類(lèi)的繼承C.系統(tǒng)架構(gòu)與系統(tǒng)開(kāi)發(fā) D.系統(tǒng)復(fù)用與系統(tǒng)擴(kuò)展12、單例模式中,兩個(gè)基本要點(diǎn)( a b )和單子類(lèi)自己提供單例 A .構(gòu)造函數(shù)私有 B.唯一實(shí)例C.靜態(tài)工廠(chǎng)方法 D.以上都不對(duì)13、下列

10、模式中,屬于行為模式的是( b ) A.工廠(chǎng)模式 B觀(guān)察者 C適配器 以上都是14、對(duì)象適配器模式是( a )原則的典型應(yīng)用。A.合成聚合復(fù)用原則 B.里式代換原則C.依賴(lài)倒轉(zhuǎn)原則 D.迪米特法則15、靜態(tài)工廠(chǎng)的核心角色是(a)A.抽象產(chǎn)品 B.具體產(chǎn)品 C.靜態(tài)工廠(chǎng) D.消費(fèi)者16、在觀(guān)察者模式中,表述錯(cuò)誤的是( c )A.觀(guān)察者角色的更新是被動(dòng)的。B.被觀(guān)察者可以通知觀(guān)察者進(jìn)行更新C.觀(guān)察者可以改變被觀(guān)察者的狀態(tài),再由被觀(guān)察者通知所有觀(guān)察者依據(jù)被觀(guān)察者的狀態(tài)進(jìn)行。D.以上表述全部錯(cuò)誤。17、以下關(guān)于創(chuàng)建型模式說(shuō)法正確的是 。 (A)A創(chuàng)建型模式關(guān)注的是對(duì)象的創(chuàng)建B創(chuàng)建型模式關(guān)注的是功能的實(shí)

11、現(xiàn)C創(chuàng)建型模式關(guān)注的是組織類(lèi)和對(duì)象的常用方法D創(chuàng)建型模式關(guān)注的是對(duì)象間的協(xié)作18.常用的描述設(shè)計(jì)模式的格式有(ABCD) 。A意圖 B動(dòng)機(jī)C適用性 D結(jié)構(gòu)19.以下關(guān)于結(jié)構(gòu)型模式說(shuō)法正確的是 (ACD)。A.結(jié)構(gòu)型模式可以在不破壞類(lèi)封裝性的基礎(chǔ)上,實(shí)現(xiàn)新的功能。B.結(jié)構(gòu)型模式主要用于創(chuàng)建一組對(duì)象。C.結(jié)構(gòu)型模式可以創(chuàng)建一組類(lèi)的統(tǒng)一訪(fǎng)問(wèn)接口D.結(jié)構(gòu)型模式可以在不破壞類(lèi)封裝性的基礎(chǔ)上,使得類(lèi)可以同不曾估計(jì)到的系統(tǒng)進(jìn)行交互。20.以下屬于結(jié)構(gòu)型模式的是(AB)。A.代理(Proxy)模式 B.合成(Composite)模式C.命令(Command)模式 D.觀(guān)察者(Observer)模式21.在不破

12、壞類(lèi)封裝性的基礎(chǔ)上,使得類(lèi)可以同不曾估計(jì)到的系統(tǒng)進(jìn)行交互。主要體現(xiàn)在(AD)。A.適配器(Adapte)模式 B.合成(Composite)模式C.原型(Prototype)模式 D.橋接(Bridge)模式22.結(jié)構(gòu)型模式中最體現(xiàn)擴(kuò)展性的幾種模式是(BC)。A.適配器(Adapte)模式 B.合成(Composite)模式C.裝飾(Decorator)模式 D.橋接(Bridge)模式23.行為類(lèi)模式使用( B )在類(lèi)間分派行為。A.接口 B.繼承機(jī)制C.對(duì)象組合 D.委托24.以下屬于行為對(duì)象模式的是 ( BCD )。A.模板(Template Method)模式 B.迭代器(Iterat

13、or)模式C.命令(Command)模式 D.觀(guān)察者(Observer)模式25.封裝分布于多個(gè)類(lèi)之間的行為的模式是( C ) 。A.觀(guān)察者(Observer)模式 B.迭代器(Iterator)模式C.訪(fǎng)問(wèn)者(Visitor)模式 D.策略(Strategy)模式26.利用繼承來(lái)提供DUCK的行為,會(huì)導(dǎo)致下列那些缺點(diǎn)?(ABCD)A代碼在多個(gè)子類(lèi)中重復(fù) B.運(yùn)行時(shí)的行為不容易改變C我們不能讓鴨子跳舞D.改變會(huì)牽一發(fā)而動(dòng)全身,造成其他鴨子不想要的改變簡(jiǎn)答題: 1什么是設(shè)計(jì)模式?設(shè)計(jì)模式的目標(biāo)是什么?答: 設(shè)計(jì)模式通常是對(duì)于某一類(lèi)的軟件設(shè)計(jì)問(wèn)題的可重用的解決方案,將設(shè)計(jì)模式引入軟件設(shè)計(jì)和開(kāi)發(fā)過(guò)程

14、,其目的就在于要充分利用已有的軟件開(kāi)發(fā)經(jīng)驗(yàn)。2設(shè)計(jì)模式具有哪三大特點(diǎn)?答: (1) 在特定的場(chǎng)景下有可重用性,對(duì)相同類(lèi)型不同問(wèn)題的環(huán)境,其解決方案都有效。(2) 可傳授性,即問(wèn)題出現(xiàn)的機(jī)會(huì)很多,解決問(wèn)題的方案相同,人們相對(duì)可以接受。(3) 有表示模式的名稱(chēng)。3GOF 設(shè)計(jì)模式常用的有幾種?GOF 設(shè)計(jì)模式按照模式的目的可分為哪三類(lèi)?答: 行為型,結(jié)構(gòu)型,創(chuàng)建型4畫(huà)出抽象工廠(chǎng)方法類(lèi)圖(這類(lèi)題自己看書(shū)去。)5.針對(duì)接口編程,不針對(duì)實(shí)現(xiàn)編程的意義。答: 主題與觀(guān)察者都是用接口:觀(guān)察者利用主題的接口向主題注冊(cè),而主題利用觀(guān)察者接口通知觀(guān)察者。這樣可以讓兩者之間運(yùn)作正常,又同時(shí)具有松耦合的優(yōu)點(diǎn)。6.面向

15、對(duì)象(OO)的原則有:答: 1. 封裝變化 2. 多用組合,少用繼承 3. 針對(duì)接口編程,不針對(duì)實(shí)現(xiàn)編程 4. 為交互對(duì)象之間的松耦合設(shè)計(jì)而努力 5. 對(duì)擴(kuò)展開(kāi)放,對(duì)修改關(guān)閉 6. 依賴(lài)抽象,不要依賴(lài)具體類(lèi) 7. 只和朋友交談 8. 別找我,我會(huì)找你 9. 類(lèi)應(yīng)該只有一個(gè)改變的理由 7. 耦合分為幾種?(1) 內(nèi)容耦合 (2) 公共耦合 (3) 外部耦合 (4) 控制耦合(5) 標(biāo)記耦合 (6) 數(shù)據(jù)耦合 (7) 非直接耦合8.GOF模式分為幾種,每種包含哪些模式?答:分為3種。創(chuàng)建型設(shè)計(jì)模式:簡(jiǎn)單工廠(chǎng)模式,工廠(chǎng)方法模式,抽象工廠(chǎng)模式,建造者模式,原型模式,單例模式;結(jié)構(gòu)型設(shè)計(jì)模式:適配器模式

16、,橋接模式,組合模式,裝飾模式,外觀(guān)模式,輕量級(jí)模式,代理模式;行為性設(shè)計(jì)模式:責(zé)任鏈模式,命令模式,解釋器模式,迭代器模式,中介者模式,備忘錄模式,觀(guān)察者模式,狀態(tài)模式,策略者模式,模板方法模式,訪(fǎng)問(wèn)者模式。綜合題 1. 某游戲公司現(xiàn)欲開(kāi)發(fā)一款面向兒童的模擬游戲,該游戲主要模擬現(xiàn)實(shí)世界中各種鴨子的發(fā)聲特征、飛行特征和外觀(guān)特征。游戲需要模擬的鴨子種類(lèi)及其特征如下表所示:為支持將來(lái)能夠模擬更多種類(lèi)鴨子的特征,采用某設(shè)計(jì)模式設(shè)計(jì)的類(lèi)圖如下所示:其中,Duck 為抽象類(lèi),描述了抽象的鴨子,而類(lèi)RubberDuck、MallardDuck、CottonDuck 和RedHeadDuck 分別描述具體的

17、鴨子種類(lèi),方法fly()、quack()和display()分別表示不同種類(lèi)的鴨子都具有飛行特征、發(fā)聲特征和外觀(guān)特征;類(lèi)FlyBehavior 與QuackBehavior為抽象類(lèi),分別用于表示抽象的飛行行為與發(fā)聲行為;類(lèi)FlyNoWay與FlyWithWings分別描述不能飛行的行為和用翅膀飛行的行為;類(lèi)Quack、Squeak與QuackNoWay分別描述發(fā)出“嘎嘎”聲的行為、發(fā)出橡皮與空氣摩擦聲的行為與不發(fā)聲的行為。C+代碼#includeusing namespace std ;class FlyBehavior public : virtual void fly() = 0;clas

18、s QuackBehavior public: virtual void quack() = 0;class FlyWithWings:public FlyBehaviorpublic: void fly() cout 使用翅膀飛行 ! endl; ;class FlyNoWay:public FlyBehaviorpublic: void fly() cout 不能飛行 ! endl; ;class Quack:public QuackBehaviorpublic: void quack() cout 發(fā)出嘎嘎聲 ! endl;class Squeak:public QuackBehaviorpublic: void quack() cout 發(fā)出空氣與橡皮摩擦聲 ! endl;class QuackNoWay:public QuackBehaviorpublic: void quack () cout 不能發(fā)聲 ! fly(); void quack() quackBehavior-quack(); ;virtual void display()=0;class RubberDuck: public Duck public:RubberDuck()flyBehavior = new FlyNoWay();quackBehavior = new Squeak();Rubbe

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論