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

下載本文檔

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

文檔簡介

...wd......wd......wd...一、1.設(shè)計(jì)模式一般用來解決什么樣的問題:A.同一問題的不同表相2.以下屬于面向?qū)ο蠡驹瓌t的是:C.里氏代換3.Open-Close原則的含義是一個軟件實(shí)體:A.應(yīng)當(dāng)對擴(kuò)展開放,對修改關(guān)閉.4.當(dāng)我們想創(chuàng)立一個具體的對象而又不希望指定具體的類時(shí),使用〔A〕模式。A.創(chuàng)立型5.要依賴于抽象不要依賴于具體。即針對接口編程不要針對實(shí)現(xiàn)編程:〔D〕依賴倒轉(zhuǎn)原則6.依據(jù)設(shè)計(jì)模式思想,程序開發(fā)中應(yīng)優(yōu)先使用的是(A)關(guān)系實(shí)現(xiàn)復(fù)用。A,委派7.設(shè)計(jì)模式的兩大主題是(D)D.系統(tǒng)復(fù)用與系統(tǒng)擴(kuò)展8.單體模式中,兩個基本要點(diǎn)(AB)和單體類自己提供單例A.構(gòu)造函數(shù)私有B.唯一實(shí)例9.以下模式中,屬于行為模式的是(B)B觀察者10.“不要和陌生人說話〞是(D)原則的通俗表述D.迪米特1.軟件體系構(gòu)造是指一個系統(tǒng)的有目的的設(shè)計(jì)和規(guī)劃,這個設(shè)計(jì)規(guī)劃既不描述活動,也不描述系統(tǒng)若何開發(fā),它只描述系統(tǒng)的組成元素及其相互的交互協(xié)作。2.一個UML模型只描述了一個系統(tǒng)要做什么,它并沒告訴我們系統(tǒng)是若何做。3.接口是可以在整個模型中反復(fù)使用的一組行為,是一個沒有屬性而只有方法的類。4.多重性指的是,某個類有多個對象可以和另一個類的一對象關(guān)聯(lián)。5.當(dāng)一個類的對象可以充當(dāng)多種角色時(shí),自身關(guān)聯(lián)就可能發(fā)生。6.在泛化關(guān)系中,子類可以替代父類。后前者出現(xiàn)的可以一樣地方。反過來卻不成立。7.最通常的依賴關(guān)系是一個類操作的形構(gòu)中用到了另一個類的定義。8.組成是強(qiáng)類型的聚集,因?yàn)榫奂械拿總€局部體只能屬于一個整體。9.實(shí)現(xiàn)的符號和繼承的符號有相似之處,兩者的唯一差異是實(shí)現(xiàn)關(guān)系用虛線表示,繼承關(guān)系用實(shí)線表示。10.設(shè)計(jì)模式中應(yīng)優(yōu)先使用對象組合而不是類繼承。適配器模式屬于創(chuàng)立型模式構(gòu)造型〔F〕在設(shè)計(jì)模式中,“效果〞只是指“原因和結(jié)果〞〔T〕設(shè)計(jì)模式使代碼編制不能真正工程化〔T〕面向?qū)ο笳Z言編程中的異常處理,可以理解為責(zé)任鏈模式〔T〕反模式就是反對在軟件開發(fā)過程中使用設(shè)計(jì)模式分析:反模式用來解決問題的帶有共性的不良方法〔F〕什么是設(shè)計(jì)模式設(shè)計(jì)模式目標(biāo)是什么答:設(shè)計(jì)模式是一套被反復(fù)使用、多數(shù)人知曉的、經(jīng)過分類編目的、代碼設(shè)計(jì)經(jīng)歷的總結(jié)。使用設(shè)計(jì)模式是為了可重用代碼、讓代碼更容易被他人理解,保證代碼可靠性。設(shè)計(jì)模式中一般都遵循的原則有什么答:開閉原則、根據(jù)場景進(jìn)展設(shè)計(jì)原則、優(yōu)先組合原則、包容變化原則“GangofFour〞針對“創(chuàng)立優(yōu)秀面向?qū)ο笤O(shè)計(jì)〞建議了哪些策略答:針對接口編程、優(yōu)先使用對象組合而不是類繼承,找到并封裝變化點(diǎn)。面向?qū)ο笙到y(tǒng)中功能復(fù)用的兩種最常用技術(shù)是什么答:類繼承和對象組合,類繼承允許你根據(jù)其他類的實(shí)現(xiàn)來定義一個類的實(shí)現(xiàn)。父類的內(nèi)部細(xì)節(jié)對子類可見。類繼承是在編譯時(shí)刻靜態(tài)定義的,且可直接使用,類繼承可以較方便地改變被復(fù)用的實(shí)現(xiàn)。對象組合是類繼承之外的另一種復(fù)用選擇。新的更復(fù)雜的功能可以通過組裝或組合對象來獲得。對象組合要求被組合的對象具有良好定義的接口。只根據(jù)抽象類中定義的接口來操縱對象有什么好處答:1)

客戶無須知道他們使用對象的特定類型,只須對象有客戶所期望的接口。

2)

客戶無須知道他們使用的對象是用什么類來實(shí)現(xiàn)的,他們只須知道定義接口的抽象類。五、應(yīng)用題〔分值15〕公司架構(gòu):經(jīng)理、工程師、技師和后勤人員都是公司的雇員,經(jīng)理管理工程師、技師和后勤人員。高層經(jīng)理領(lǐng)導(dǎo)較低級別的經(jīng)理。典型層次圖如下:可以使用哪種設(shè)計(jì)模式實(shí)現(xiàn)公司的層級關(guān)系并說明為什么組合模式,第一,其公司關(guān)系架構(gòu)為樹形構(gòu)造;第二,其表示了局部-整體關(guān)系〔自己擴(kuò)展〕1.在觀察者模式中,表述錯誤的選項(xiàng)是〔C〕C.觀察者可以改變被觀察者的狀態(tài),再由被觀察者通知所有觀察者依據(jù)被觀察者的狀態(tài)進(jìn)展。2.對于違反里式代換原則的兩個類,可以采用的候選解決方案錯誤的選項(xiàng)是:〔D〕D.以上方案錯誤3.以下模式屬于構(gòu)造型設(shè)計(jì)模式的是〔AB〕A.CompositeB.享元〔Flyweight〕模式4.關(guān)于繼承表述錯誤的選項(xiàng)是:〔D〕D.繼承本質(zhì)上是“白盒復(fù)用〞,對父類的修改,不會影響到子類。5.對于依賴倒轉(zhuǎn)的表述錯誤的選項(xiàng)是〔C〕C.從選項(xiàng)B的角度論述,一個對象可以有多個接口。6.可以使用哪一種設(shè)計(jì)模式限制類的實(shí)例唯一〔D〕D.單體模式7.Java數(shù)據(jù)庫連接庫JDBC用到哪種設(shè)計(jì)模式〔B〕B.工廠方法8.關(guān)于運(yùn)用GOF工廠方法的效果Consequences,說法不正確的選項(xiàng)是〔C〕有利于產(chǎn)品的一致性8.在應(yīng)用程序中可用哪些設(shè)計(jì)模式別離出算法〔B〕B.策略模式9.工廠方法也稱為〔D〕D.虛構(gòu)造器10.可以使用哪種設(shè)計(jì)模式將抽象和實(shí)現(xiàn)解耦,使得抽象和實(shí)現(xiàn)可以單獨(dú)變化〔B〕橋接模式1.面向?qū)ο蟮钠邨l基本原則包括:開閉原則,里式代換原則,合成聚合原則以及〔迪米特法則

〕,〔

依賴倒轉(zhuǎn)

〕,〔

單一原則

〕,〔

接口隔離

〕。

2.在存在繼承關(guān)系的情況下,方法向〔

超類

〕方向集中,而數(shù)據(jù)向〔

子類

〕方向集中。

3.適配器模式,分為類的適配器和對象的適配器兩種實(shí)現(xiàn)。其中類的適配器采用的是〔

繼承

〕關(guān)系,而對象適配器采用的是〔組合聚合〕關(guān)系。

4.設(shè)計(jì)模式的四個基本要素是〔名字

〕,〔意圖

〕,〔問題

〕和〔

解決方案

〕。

5..創(chuàng)立型模式的基本意圖是要把〔

對象的創(chuàng)立

〕和〔

使用別離

〕的責(zé)任進(jìn)展別離,從而降低系統(tǒng)的〔

耦合度

〕。

6.工廠模式分為(簡單工廠

),(

工廠方法

),(

抽象工廠

)三種類型。

7.門面模式是(

迪米特

)法則的典型運(yùn)用

8.MVC模型的基本工作原理是基于(

觀察者

)模式,實(shí)現(xiàn)是基于〔

命令

〕模式

9.設(shè)計(jì)模式的思想根源是(開閉

)基本原則的宏觀運(yùn)用,本質(zhì)上是沒有任何模式的,發(fā)現(xiàn)模式的人永遠(yuǎn)是大師,而死守模式的人,最對只能是一個工匠.

1.

在MVC模型中M、V、C分別指什么簡述它們之間的關(guān)系

M:

模型(Model),V:視圖(View)C:控制Controller)。

MVC模式的目的就是實(shí)現(xiàn)Web系統(tǒng)的職能分工。

Model層實(shí)現(xiàn)系統(tǒng)中的業(yè)務(wù)邏輯,通??梢杂肑avaBean或EJB來實(shí)現(xiàn)。

View層用于與用戶的交互,通常用JSP來實(shí)現(xiàn)。

Controller層是Model與View之間溝通的橋梁,它可以分派用戶的請求并選擇恰當(dāng)?shù)囊晥D以用于顯示,同時(shí)它也可以解釋用戶的輸入并將它們映射為模型層可執(zhí)行的操作。

2.

什么是開閉原則軟件實(shí)體應(yīng)當(dāng)對擴(kuò)展開放,對修改關(guān)閉,軟件系統(tǒng)中包含的各種組件,例如模塊〔Modules〕、類〔Classes〕以及功能〔Functions〕等,應(yīng)該在不修改現(xiàn)有代碼的根基上,引入新功能。開閉原則中“開〞,是指對于組件功能的擴(kuò)展是開放的,是允許對其進(jìn)展功能擴(kuò)展的;開閉原則中“閉〞,是指對于原有代碼的修改是封閉的,即不應(yīng)該修改原有的代碼。

3.設(shè)計(jì)數(shù)據(jù)庫的系統(tǒng)日志,要考慮使用哪些設(shè)計(jì)模式答:命令模式,備忘錄模式,外觀模式

4.

使用工廠模式的主要原因是什么

工廠模式定義:提供創(chuàng)立對象的接口.

因?yàn)楣S模式就相當(dāng)于創(chuàng)立實(shí)例對象的new,我們經(jīng)常要根據(jù)類Class生成實(shí)例對象,如A

a=new

A()

工廠模式也是用來創(chuàng)立實(shí)例對象的,所以以后new時(shí)就要多個心眼,是否可以考慮使用工廠模式,雖然這樣做,可能多做一些工作,但會給你系統(tǒng)帶來更大的可擴(kuò)展性和盡量少的修改量。

5.

在面向?qū)ο笤O(shè)計(jì)中,《編譯原理》的有限狀態(tài)機(jī)可以什么樣解決方案完成

貓大叫一聲,所有的老鼠都開場逃跑,主人被驚醒問:〔1〕設(shè)計(jì)可能用到什么設(shè)計(jì)模式〔2〕畫出其類圖。觀察者模式分析:要有聯(lián)動性,老鼠和主人的行為是被動的;考慮可擴(kuò)展性,貓的叫聲可能引起其他聯(lián)動效應(yīng)。一、多項(xiàng)選擇題〔1〕以下是模式的基本要素的是〔ABCD〕A名稱B意圖C〕解決方案D〕參與者和協(xié)作者〔2〕常用的描述設(shè)計(jì)模式的格式有〔ABCD〕A〕意圖B〕動機(jī)C〕適用性D〕構(gòu)造〔3〕以下哪些問題通過應(yīng)用設(shè)計(jì)模式能夠解決〔AD〕A指定對象的接口D設(shè)計(jì)應(yīng)支持變化〔4〕面向?qū)ο笙到y(tǒng)中功能復(fù)用的最常用技術(shù)是〔AB〕。A〕類繼承B〕對象組合〔5〕常用的基本設(shè)計(jì)模式可分為〔A〕。A〕創(chuàng)立型、構(gòu)造型和行為型〔6〕以下關(guān)于創(chuàng)立型模式說法正確的選項(xiàng)是〔A〕。A〕創(chuàng)立型模式關(guān)注的是對象的創(chuàng)立〔7〕以下屬于創(chuàng)立型模式的是〔AC〕。A〕抽象工廠〔AbstractFactory〕模式C〕單例〔Singleton〕模式〔8〕(C)模式是利用一個對象,快速生成一批對象。C〕原型〔Prototype〕模式〔9〕在不破壞類封裝性的根基上,使得類可以同不曾估計(jì)到的系統(tǒng)進(jìn)展交互。主要表達(dá)在(AD)。A〕適配器〔Adapter〕模式D〕橋接〔Bridge〕模式〔10〕構(gòu)造型模式中最表達(dá)擴(kuò)展性的幾種模式是(C)C〕裝飾〔Decorator〕模式〔11〕行為類模式使用〔C〕在類間分派行為。C〕對象組合〔12〕以下屬于行為對象模式的是(ABCD)A〕模板〔TemplateMethod〕模式B〕迭代器〔Iterator〕模式C〕命令〔Command〕模式D〕觀察者〔Observer〕模式〔13〕封裝分布于多個類之間的行為的模式是(C)C〕訪問者〔Visitor〕模式〔14〕Observer〔觀察者〕模式適用于(C)?!睠〕當(dāng)一個對象必須通知其它對象,而它又不能假定其它對象是誰。也就是說你不希望這些對象是緊耦合的?!?5〕Java的異常處理機(jī)制可理解為哪一種行為模式〔C〕。C〕職責(zé)鏈〔ChainofResponsibility〕模式二、填空題〔分值20〕〔單一職責(zé)〕原則的核心思想是系統(tǒng)中的每一個對象都應(yīng)該只有一個單獨(dú)的職責(zé),而所有對象所關(guān)注的就是自身職責(zé)的完成?!查_閉〕原則的核心思想是一個對象對擴(kuò)展開放,對修改關(guān)閉;實(shí)現(xiàn)此原則的關(guān)鍵就在于〔抽象〕、別離出〔擴(kuò)展〕局部和〔修改〕局部?!怖锸咸鎿Q〕原則的核心思想是在任何父類出現(xiàn)的地方都可以用它的子類來替代。〔依賴倒置〕原則的核心思想是要依賴于抽象,而不要依賴于具體的實(shí)現(xiàn)?!步涌诟綦x〕原則的核心思想是不應(yīng)該強(qiáng)迫客戶程序依賴于他們不用的方法。即一個接口不需要提供太多的行為,應(yīng)該只提供一種對外的功能,不應(yīng)該把所有的操作都封裝在一個接口中?!驳厦滋亍吃瓌t的核心思想是一個對象應(yīng)當(dāng)對其它對象盡可能少的了解?;蛘哒f,只和你的朋友說話。這樣一些對象可以看做朋友:當(dāng)前對象本身、通過方法的參數(shù)傳遞進(jìn)來的對象、當(dāng)前對象所創(chuàng)立的對象、當(dāng)前對象的實(shí)例變量所引用的對象和方法內(nèi)所創(chuàng)立或者實(shí)例化的對象?!矁?yōu)先使用組合〕原則的核心思想是優(yōu)先使用組合而非繼承。設(shè)計(jì)模式應(yīng)該面向〔對象〕編程三、判斷題〔分值10〕單一職責(zé)原則表現(xiàn)在面向?qū)ο蟮某绦蛑芯褪恰案邇?nèi)聚、低耦合〞。(T)設(shè)計(jì)模式只能遵從使用,不能也無需創(chuàng)新。(F)在面向?qū)ο缶幊虝r(shí),無論何時(shí)何地都要使用GoF所給出的設(shè)計(jì)模式,這樣編寫的代碼才對比好。(F)工廠方法能夠提高內(nèi)聚性,松散耦合,并且有助于測試。(F)對象要么構(gòu)造其它對象,要么使用其它對象,絕不要兩者兼顧。(T)問答題1、單例模式的兩種實(shí)現(xiàn)方法,并說明優(yōu)缺點(diǎn)〔1〕懶漢式,在類被加載時(shí),唯一的實(shí)例已經(jīng)被創(chuàng)立。這個模式在java中很容易實(shí)現(xiàn),在其他語言中很難.〔2〕餓漢式,在類加載的時(shí)候不創(chuàng)立單例實(shí)體。只有在第一次請求實(shí)例的時(shí)候創(chuàng)立,并且只在第一次創(chuàng)立后不再創(chuàng)佳該類的實(shí)例2、什么是對象粒度所謂的對象粒度就是對象從抽象到具體的描述的程度。同樣一個系統(tǒng),同樣的需求。兩個設(shè)計(jì)師給出兩種設(shè)計(jì)。兩個設(shè)計(jì)代碼行數(shù)差不多,但是類的數(shù)目不同。例如有一個對象,我可以用10行代碼去構(gòu)造它,我也可以用20行代碼,后者比前者更為準(zhǔn)確。3、MVC模式是個復(fù)合模式,請寫出你兩種你所知道的MVC中使用的模式。〔1〕觀察者模式:定義對象間的一種一對多的依賴關(guān)系,當(dāng)一個對象的狀態(tài)發(fā)生改變時(shí),所有依賴于它的對象都得到通知并被自動更新?!?〕策略模式:定義了算法族,分別封裝起來,讓他們之間可以相互替換,此模式讓算法的變化獨(dú)立于使用算法的客戶。4、舉例說明,適配器模式和裝配器在JavaIO中的應(yīng)用。〔1裝飾者模式:在由InputStream,OutputStream,Reader和Writer代表的等級構(gòu)造內(nèi)部,有一些流處理器可以對另一些流處理器起到裝飾作用,形成新的,具有改善了的功能的流處理器。裝飾者模式是JavaI/O庫的整體設(shè)計(jì)模式。這樣的一個原則是符合裝飾者模式的〔2適配器模式:在由InputStream,OutputStream,Reader和Writer代表的等級構(gòu)造內(nèi)部,有一些流處理器是對其它類型的流源的適配。這就是適配器模式的應(yīng)用,適配器模式應(yīng)用到了原始流處理器的設(shè)計(jì)上面,構(gòu)成了I/O庫所有流處理器的起點(diǎn)。5、在面向?qū)ο蟪绦蛟O(shè)計(jì)中,常常需要防止過多case語句或者if語句,請給出一種設(shè)計(jì)模式防止過多的條件分支語句,同時(shí)指出這種設(shè)計(jì)模式若何幫助防止過多的Case語句訪問者模式。例如switch(pt){caseA:break;caseB:break;.....}1.把每個條件作成一個類,比方A條件classA{publicvoidaccept(){//處理邏輯}}2、然后把每個條件的處理方法都用一個類來管理.publicclassCommonVisitor{publicvoidvisit(Aa){a.accept();}//其他條件的訪問方法publicvoidvisit(Bb){b.accept();}}3、main里面就這樣調(diào)用就行.publicstaticvoidmain(Stirngargs[]){CommonVisitorvisitor=newCommonVisitor();//如果是想用A條件,則visitor.visit(newA());}這樣寫的好處,以后先加條件的話我只需要定義新的條件類就行,還有就是在CommonVisitor添加新條件的訪問方法就行,這樣就很好作到一個條件管理一個邏輯五、應(yīng)用題〔分值10〕某房地產(chǎn)公司欲開發(fā)一套房產(chǎn)信息管理系統(tǒng),根據(jù)如下描述選擇適宜的設(shè)計(jì)模式進(jìn)展設(shè)計(jì):(1)該公司有多種房型,如公寓、別墅等,在將來可能會增加新的房型;(2)銷售人員每售出一套房子,主管將收到相應(yīng)的銷售消息。如果對上述場景編程,那么上述〔1〕和〔2〕可能分別用到哪些設(shè)計(jì)模式對于描述(1)可以選擇使用工廠方法模式,對于描述(2)可以選擇使用觀察者模式,此題參考類圖如下所示:1.設(shè)計(jì)模式具有的優(yōu)點(diǎn)(A)。A.適應(yīng)需求變化2.以以以下圖描述了一種設(shè)計(jì)模式〔Client〕,該設(shè)計(jì)模式不可以(A)。A.動態(tài)決定由一組對象中某個對象處理該請求3.假設(shè)系統(tǒng)中的某子模塊需要為其它模塊提供訪問不同數(shù)據(jù)庫系統(tǒng)〔Oracle、SQLServer、DB2UDB等〕的功能,(B)設(shè)計(jì)模式可抽象出一樣的數(shù)據(jù)庫訪問過程;B.裝飾4.系統(tǒng)中的文本顯示類〔TextView〕和圖片顯示類〔PictureView〕都繼承了組件類〔Component〕,但希望最多只增加三個類,(B)設(shè)計(jì)模式可以實(shí)現(xiàn)該目的。B.裝飾5.下面的類圖表示的是哪個模式{AbstractFactory}(A)A.抽象工廠模式6.下面的類圖表示的是哪個設(shè)計(jì)模式{Subject}(D)D.觀察者模式〔Observer〕7.下面的類圖表示的是哪個模式{Fa?ade}(B)B.外觀模式〔Facade〕8.下面的類圖說明了哪個模式{Product}(D)D.工廠方法模式〔FactoryMethod〕9.下面的類圖表示的是哪個設(shè)計(jì)模式{Context}(D)D.狀態(tài)模式(State)10.下面的類圖說明了哪個模式{Singleton}(C)C.單例模式(Singleton)二、填空題〔分值20〕1.〔工廠方法〕模式中,父類負(fù)責(zé)定義創(chuàng)立對象的公共接口,子類則負(fù)責(zé)生成具體的對象。2.〔抽象工廠〕模式提供一系列相關(guān)或相互依賴對象的接口而無需指定它們具體的類。3〔原型〕模式用原型實(shí)例指定創(chuàng)立對象的種類,并且通過拷貝這些原型實(shí)例創(chuàng)立新的對象。4.〔單例〕模式確保某一個類僅有一個實(shí)例,并自行實(shí)例化并向整個系統(tǒng)提供這個實(shí)例。5.〔組合〕模式將對象組合成樹形構(gòu)造以表示“局部-整體〞的層次構(gòu)造。使得用戶對單個對象和組合對象的使用具有一致性。6.〔外觀〕模式定義了一個高層接口,這個接口使得這一子系統(tǒng)更加容易使用,為子系統(tǒng)中的一組接口提供一個一致的界面。7.〔享元〕模式運(yùn)用共享技術(shù)有效地支持大量細(xì)粒度的對象。8.〔責(zé)任鏈〕模式使多個對象都有時(shí)機(jī)處理請求,從而防止請求的發(fā)送者和接收者之間的耦合關(guān)系。9.〔觀察者〕模式定義對象間的一種一對多的依賴關(guān)系,當(dāng)一個對象的狀態(tài)發(fā)生改變時(shí),所有依賴于它的對象都得到通知并被自動更新。10.〔模板方法〕模式定義一個操作中的算法的骨架,而將一些步驟延遲到子類中。三、簡答題〔分值30〕關(guān)于設(shè)計(jì)模式,請答復(fù):1、什么是設(shè)計(jì)模式設(shè)計(jì)模式的目標(biāo)是什么〔1〕、設(shè)計(jì)模式是一套被反復(fù)使用,多數(shù)人知曉的,經(jīng)過分類編寫的代碼設(shè)計(jì)經(jīng)歷的總結(jié)?!?〕、目標(biāo):為了可重用代碼,讓代碼更容易被他人理解,保證代碼可靠性。2、設(shè)計(jì)模式具有哪三大特點(diǎn)〔1〕、可重用性,對一樣類型問題反復(fù)出現(xiàn),盡管問題的環(huán)境有不同,但解決方案有效。〔2〕、可傳授性,問題反復(fù)出現(xiàn),解決問題的方案一樣,大家都承受該解決方案。?!?〕、名稱,每個設(shè)計(jì)模式都有名稱。3、GOF設(shè)計(jì)模式常用的有幾種GOF設(shè)計(jì)模式按照模式的目的可分為哪三類〔1〕23中;〔2〕、構(gòu)造型,將現(xiàn)存的對象結(jié)合在一起。行為性,提供一種顯得靈活變化的行為。創(chuàng)立型,穿件或?qū)嵗瘜ο?、簡述面向?qū)ο蟪绦蛟O(shè)計(jì)的六大基本原則答:開閉原則、里氏代換原則、依賴倒轉(zhuǎn)原則、合成/聚合復(fù)用原則、迪米特法則、接口隔離原則。2、簡述什么是單例模式,以及他解決的問題,應(yīng)用的環(huán)境,解決的方案,模式的本質(zhì)答;在任何時(shí)間內(nèi)只有一個類實(shí)例存在的模式。需要有一個從中進(jìn)展全局訪問和維護(hù)某種類型數(shù)據(jù)的區(qū)域的環(huán)境下使用單例模式。解決這個問題的方法是為指示類是否已經(jīng)實(shí)例化的變量提供一個互斥鎖。解決方案就是保證一個類只有一個類實(shí)例存在。本質(zhì)就是實(shí)例共用同一塊內(nèi)存區(qū)域。3、為什么面向?qū)ο蟮姆治龊驮O(shè)計(jì)中優(yōu)先使用組合,而非繼承答:繼承關(guān)系有很多缺點(diǎn),如果合理使用組合則可以有效的防止這些缺點(diǎn),使用組合關(guān)系將系統(tǒng)對變化的適應(yīng)力從靜態(tài)提升到動態(tài),而且由于組合將已有對象組合到了新對象中,因此新對象可以調(diào)用已有對象的功能。由于組合關(guān)系中各個對象的內(nèi)部實(shí)現(xiàn)是隱藏的,我們只能通過接口調(diào)用,因此我們完全可以在運(yùn)行期用實(shí)現(xiàn)了同樣接口的另外一個對象來代替原對象,從而靈活實(shí)現(xiàn)運(yùn)行期的行為控制。而且使用合成關(guān)系有助于保持每個類的職責(zé)的單一性,這樣類的層次體系以及類的規(guī)模都不太可能增長為不可控制的龐然大物。在下面的C++代碼中,類SalesTicket能夠完成打印票據(jù)正文的功能,闡述采用該設(shè)計(jì)模式該代碼采用裝飾(Decorator)設(shè)計(jì)模式實(shí)現(xiàn)。采用該設(shè)計(jì)模式的目的能夠動態(tài)地給一個對象增加一些新的職責(zé)不不需要采用生成子類的方法。可以讓客戶選擇給該類對象附加新的功能的時(shí)機(jī)以及是否增加新職責(zé)。比生成子類的方法更為靈活。主任可以審批1萬元以下的采購單,副董事長可以申批2.5萬元以下的采購單,董事長可以審批10萬元以下的采購單,10萬元以上的采購單就需要開會決定。選擇設(shè)計(jì)模式并其類圖。責(zé)任鏈模式:一、1.以動作和事務(wù)聞名,且以對象形式用來封:B.命令模式2.以下不屬于創(chuàng)立型模式是(A)PROXY〔代理〕3.以下不屬于構(gòu)造型模式是(D)D.SINGLETON(單例)4、以下不屬于行為型模式是(D)MEMENTO〔備忘錄〕5、以下意圖那個是用來描述BUILDER〔生成器〕(B)將一個復(fù)雜對象的構(gòu)建與它的表示別離,使得同樣的構(gòu)建過程可以創(chuàng)立不同的表示。6、以下意圖那個是用來描述PROTOTYPE〔原型〕(D)D.用原型實(shí)例指定創(chuàng)立對象的種類,并通過拷貝這些原型創(chuàng)立新的對象。7、以下意圖那個是用來描述ADAPTER〔適配器〕(A)將一個類的接口轉(zhuǎn)換成客戶希望的另外一個接口。本模式使得原本由于接口不兼容而不能一起工作的那些類可以一起工作。8.以下意圖那個是用來描述BRIDGE〔橋接〕(B)B.將抽象局部與它的實(shí)現(xiàn)局部別離,使它們都可以獨(dú)立地變化。9.以下哪個意圖是用來描述COMPOSITE〔組合〕?(C)將對象組合成樹形構(gòu)造以表示局部-整體的層次構(gòu)造。10、以下那個是用來描述DECORATOR〔裝飾〕(D)動態(tài)地給一個對象添加一些額外的職責(zé)。11、以下意圖那個是用來描述FACADE〔外觀〕?(A)為子系統(tǒng)中的一組接口提供一個一致的界面,本模式定義了一個高層接口,這個接口使得這一子系統(tǒng)更加容易使用。12、以下意圖那個是用來描述FLYWEIGHT〔享元〕(B)B.運(yùn)用共享技術(shù)有效地支持大量細(xì)粒度的對象。13、以下意圖那個是用來描述PROXY〔代理〕(C)C.為其他對象提供一種代理以控制對這個對象的訪問。14、以下意圖那個是用來描述CHAINOFRESPONSIBILITY(職責(zé)鏈)?(D)D.使多個對象都有時(shí)機(jī)處理請求,從而防止請求的發(fā)送者和接收者之間的耦合關(guān)系。15、以下意圖那個是用來描述COMMAND〔命令〕(A)A、將一個請求封裝為一個對象;對請求

溫馨提示

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

最新文檔

評論

0/150

提交評論