版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、一、1. 設(shè)計(jì)模式一般用來(lái)解決什么樣的問(wèn)題: A.同一問(wèn)題的不同表相2. 下列屬于面向?qū)ο蠡驹瓌t的是: C.里氏代換3. Open-Close原則的含義是一個(gè)軟件實(shí)體:A.應(yīng)當(dāng)對(duì)擴(kuò)展開(kāi)放,對(duì)修改關(guān)閉.4. 當(dāng)我們想創(chuàng)建一個(gè)具體的對(duì)象而又不希望指定具體的類(lèi)時(shí),使用(A)模式。A.創(chuàng)建型 5. 要依賴于抽象不要依賴于具體。即針對(duì)接口編程不要針對(duì)實(shí)現(xiàn)編程:(D)依賴倒轉(zhuǎn)原則6. 依據(jù)設(shè)計(jì)模式思想,程序開(kāi)發(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. 單體模式中,兩個(gè)基本要點(diǎn)(AB)和單體類(lèi)自己提供單例A .構(gòu)造函數(shù)私有 B.唯一
2、實(shí)例9. 下列模式中,屬于行為模式的是( B ) B觀察者10. “不要和陌生人說(shuō)話” 是( D )原則的通俗表述 D.迪米特1. 軟件體系結(jié)構(gòu)是指一個(gè)系統(tǒng)的有目的的設(shè)計(jì)和規(guī)劃,這個(gè)設(shè)計(jì)規(guī)劃既不描述 活動(dòng) ,也不描述 系統(tǒng)怎樣開(kāi)發(fā) ,它只描述系統(tǒng)的 組成元素 及其相互的 交互協(xié)作 。2一個(gè)UML模型只描述了一個(gè)系統(tǒng) 要做什么 ,它并沒(méi)告訴我們系統(tǒng)是 怎么做 。3接口是可以在整個(gè)模型中反復(fù)使用的一組行為,是一個(gè)沒(méi)有 屬性 而只有 方法 的類(lèi)。4多重性指的是,某個(gè)類(lèi)有 多 個(gè)對(duì)象可以和另一個(gè)類(lèi)的 一 對(duì)象關(guān)聯(lián)。5當(dāng)一個(gè)類(lèi)的對(duì)象可以充當(dāng)多種角色時(shí), 自身 關(guān)聯(lián)就可能發(fā)生。6在泛化關(guān)系中,子類(lèi) 可以替
3、代 父類(lèi)。后前者出現(xiàn)的可以相同地方。反過(guò)來(lái)卻不成立。7最通常的依賴關(guān)系是一個(gè)類(lèi)操作的 形構(gòu) 中用到了 另一個(gè)類(lèi) 的定義。8組成是 強(qiáng)類(lèi)型 的聚集,因?yàn)榫奂械拿總€(gè)部分體只能屬于 一個(gè) 整體。9實(shí)現(xiàn)的符號(hào)和繼承的符號(hào)有相似之處,兩者的唯一差別是實(shí)現(xiàn)關(guān)系用 虛線 表示,繼承關(guān)系用 實(shí)線 表示。10. 設(shè)計(jì)模式中應(yīng)優(yōu)先使用 對(duì)象組合 而不是 類(lèi)繼承 。1. 適配器模式屬于創(chuàng)建型模式結(jié)構(gòu)型( F )2. 在設(shè)計(jì)模式中,“效果”只是指“原因和結(jié)果”( T )3. 設(shè)計(jì)模式使代碼編制不能真正工程化 ( T )4. 面向?qū)ο笳Z(yǔ)言編程中的異常處理,可以理解為責(zé)任鏈模式(T )5. 反模式就是反對(duì)在軟件開(kāi)發(fā)過(guò)程
4、中使用設(shè)計(jì)模式分析:反模式用來(lái)解決問(wèn)題的帶有共性的不良方法(F )1. 什么是設(shè)計(jì)模式?設(shè)計(jì)模式目標(biāo)是什么?答:設(shè)計(jì)模式是一套被反復(fù)使用、多數(shù)人知曉的、經(jīng)過(guò)分類(lèi)編目的、代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)。使用設(shè)計(jì)模式是為了可重用代碼、讓代碼更容易被他人理解,保證代碼可靠性。2. 設(shè)計(jì)模式中一般都遵循的原則有什么?答:開(kāi)閉原則、根據(jù)場(chǎng)景進(jìn)行設(shè)計(jì)原則、優(yōu)先組合原則、包容變化原則3. “Gang of Four”針對(duì)“創(chuàng)建優(yōu)秀面向?qū)ο笤O(shè)計(jì)”建議了哪些策略?答:針對(duì)接口編程、優(yōu)先使用對(duì)象組合而不是類(lèi)繼承,找到并封裝變化點(diǎn)。4. 面向?qū)ο笙到y(tǒng)中功能復(fù)用的兩種最常用技術(shù)是什么?答:類(lèi)繼承和對(duì)象組合,類(lèi)繼承允許你根據(jù)其他類(lèi)
5、的實(shí)現(xiàn)來(lái)定義一個(gè)類(lèi)的實(shí)現(xiàn)。父類(lèi)的內(nèi)部細(xì)節(jié)對(duì)子類(lèi)可見(jiàn)。類(lèi)繼承是在編譯時(shí)刻靜態(tài)定義的,且可直接使用,類(lèi)繼承可以較方便地改變被復(fù)用的實(shí)現(xiàn)。對(duì)象組合是類(lèi)繼承之外的另一種復(fù)用選擇。新的更復(fù)雜的功能可以通過(guò)組裝或組合對(duì)象來(lái)獲得。對(duì)象組合要求被組合的對(duì)象具有良好定義的接口。5. 只根據(jù)抽象類(lèi)中定義的接口來(lái)操縱對(duì)象有什么好處? 答:1) 客戶無(wú)須知道他們使用對(duì)象的特定類(lèi)型,只須對(duì)象有客戶所期望的接口。 2) 客戶無(wú)須知道他們使用的對(duì)象是用什么類(lèi)來(lái)實(shí)現(xiàn)的,他們只須知道定義接口的抽象類(lèi)。五、應(yīng)用題(分值15)公司架構(gòu):經(jīng)理、工程師、技師和后勤人員都是公司的雇員,經(jīng)理管理工程師、技師和
6、后勤人員。高層經(jīng)理領(lǐng)導(dǎo)較低級(jí)別的經(jīng)理。典型層次圖如下:可以使用哪種設(shè)計(jì)模式實(shí)現(xiàn)公司的層級(jí)關(guān)系?并說(shuō)明為什么?組合模式,第一,其公司關(guān)系架構(gòu)為樹(shù)形結(jié)構(gòu);第二,其表示了部分-整體關(guān)系(自己擴(kuò)展)1. 在觀察者模式中,表述錯(cuò)誤的是( C )C. 觀察者可以改變被觀察者的狀態(tài),再由被觀察者通知所有觀察者依據(jù)被觀察者的狀態(tài)進(jìn)行。2. 對(duì)于違反里式代換原則的兩個(gè)類(lèi),可以采用的候選解決方案錯(cuò)誤的是:( D )D. 以上方案錯(cuò)誤3. 下列模式屬于結(jié)構(gòu)型設(shè)計(jì)模式的是( AB )A. Composite B. 享元(Flyweight)模式4. 關(guān)于繼承表述錯(cuò)誤的是:( D )D. 繼承本質(zhì)上是“白盒復(fù)用”,對(duì)父
7、類(lèi)的修改,不會(huì)影響到子類(lèi)。5. 對(duì)于依賴倒轉(zhuǎn)的表述錯(cuò)誤的是(C)C. 從選項(xiàng)B的角度論述,一個(gè)對(duì)象可以有多個(gè)接口。6. 可以使用哪一種設(shè)計(jì)模式限制類(lèi)的實(shí)例唯一?( D )D單體模式7. Java數(shù)據(jù)庫(kù)連接庫(kù)JDBC用到哪種設(shè)計(jì)模式( B )?B.工廠方法8. 關(guān)于運(yùn)用GOF工廠方法的效果Consequences,說(shuō)法不正確的是(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基本原則包括:開(kāi)閉原則
8、,里式代換原則,合成聚合原則以及(迪米特法則 ),( 依賴倒轉(zhuǎn) ),( 單一原則 ),( 接口隔離 )。2. 在存在繼承關(guān)系的情況下,方法向( 超類(lèi) )方向集中,而數(shù)據(jù)向( 子類(lèi) )方向集中。3. 適配器模式,分為類(lèi)的適配器和對(duì)象的適配器兩種實(shí)現(xiàn)。其中類(lèi)的適配器采用的是( 繼承 )關(guān)系,而對(duì)象適配器采用的是(組合聚合)關(guān)系。4. 設(shè)計(jì)模式的四個(gè)基本要素是(名字
9、 ),(意圖 ),(問(wèn)題 )和( 解決方案 )。5. .創(chuàng)建型模式的根本意圖是要把( 對(duì)象的創(chuàng)建 )和( 使用分離 )的責(zé)任進(jìn)行分離,從而降低系統(tǒng)的( 耦合度 )。6. 工廠模式分為(簡(jiǎn)單工廠 ),( 工廠方法 ),( 抽象工廠 )三種類(lèi)型。7. 門(mén)面模式是( 迪米特
10、60; )法則的典型運(yùn)用8. MVC模型的基本工作原理是基于( 觀察者 )模式,實(shí)現(xiàn)是基于( 命令 )模式9. 設(shè)計(jì)模式的思想根源是(開(kāi)閉 )基本原則的宏觀運(yùn)用,本質(zhì)上是沒(méi)有任何模式的,發(fā)現(xiàn)模式的人永遠(yuǎn)是大師,而死守模式的人,最對(duì)只能是一個(gè)工匠. 1. 在MVC模型中M、V、C分別指什么?簡(jiǎn)述它們之間的關(guān)系?M: 模型(Model), V:視圖(View) C:控制Controller)。MVC模式的目的就是實(shí)現(xiàn)Web系統(tǒng)的職能分工。
11、Model層實(shí)現(xiàn)系統(tǒng)中的業(yè)務(wù)邏輯,通??梢杂肑avaBean或EJB來(lái)實(shí)現(xiàn)。 View層用于與用戶的交互,通常用JSP來(lái)實(shí)現(xiàn)。 Controller層是Model與View之間溝通的橋梁,它可以分派用戶的請(qǐng)求并選擇恰當(dāng)?shù)囊晥D以用于顯示,同時(shí)它也可以解釋用戶的輸入并將它們映射為模型層可執(zhí)行的操作。2. 什么是開(kāi)閉原則?軟件實(shí)體應(yīng)當(dāng)對(duì)擴(kuò)展開(kāi)放,對(duì)修改關(guān)閉,軟件系統(tǒng)中包含的各種組件,例如模塊(Modules)、類(lèi)(Classes)以及功能(Functions)等,應(yīng)該在不修改現(xiàn)有代碼的基礎(chǔ)上,引入新功能。開(kāi)閉原則中“開(kāi)”,是指對(duì)于組件功能的擴(kuò)展是開(kāi)放的,是允許對(duì)其進(jìn)行功
12、能擴(kuò)展的;開(kāi)閉原則中“閉”,是指對(duì)于原有代碼的修改是封閉的,即不應(yīng)該修改原有的代碼。 3.設(shè)計(jì)數(shù)據(jù)庫(kù)的系統(tǒng)日志,要考慮使用哪些設(shè)計(jì)模式?答:命令模式,備忘錄模式,外觀模式4. 使用工廠模式的主要原因是什么?工廠模式定義:提供創(chuàng)建對(duì)象的接口. 因?yàn)楣S模式就相當(dāng)于創(chuàng)建實(shí)例對(duì)象的new,我們經(jīng)常要根據(jù)類(lèi)Class生成實(shí)例對(duì)象,如A a=new A() 工廠模式也是用來(lái)創(chuàng)建實(shí)例對(duì)象的,所以以后new時(shí)就要多個(gè)心眼,是否可以考慮使用工廠模式,雖然這樣做,可能多做一些工作,但會(huì)給你系統(tǒng)帶來(lái)更大的可擴(kuò)展性和盡量少的修改量。5、貓大叫一聲,所有的老
13、鼠都開(kāi)始逃跑,主人被驚醒問(wèn):(1)設(shè)計(jì)可能用到什么設(shè)計(jì)模式?(2)畫(huà)出其類(lèi)圖。 觀察者模式 分析:要有聯(lián)動(dòng)性,老鼠和主人的行為是被動(dòng)的;考慮可擴(kuò)展性,貓的叫聲可能引起其他聯(lián)動(dòng)效應(yīng)。一、 多項(xiàng)選擇題(1)以下是模式的基本要素的是(ABCD)A名稱B意圖C)解決方案D)參與者和協(xié)作者(2)常用的描述設(shè)計(jì)模式的格式有(ABCD)A)意圖B)動(dòng)機(jī)C)適用性D)結(jié)構(gòu)(3)以下哪些問(wèn)題通過(guò)應(yīng)用設(shè)計(jì)模式能夠解決(AD)A指定對(duì)象的接口D設(shè)計(jì)應(yīng)支持變化(4)面向?qū)ο笙到y(tǒng)中功能復(fù)用的最常用技術(shù)是( AB )。A)類(lèi)繼承B)對(duì)象組合(5)常用的基本設(shè)計(jì)模式可分為( A )。A)創(chuàng)建型、結(jié)構(gòu)型和行為型(6)以下關(guān)于
14、創(chuàng)建型模式說(shuō)法正確的是(A )。A)創(chuàng)建型模式關(guān)注的是對(duì)象的創(chuàng)建 (7)以下屬于創(chuàng)建型模式的是(AC )。A)抽象工廠(Abstract Factory)模式 C)單例(Singleton)模式(8) ( C )模式是利用一個(gè)對(duì)象,快速生成一批對(duì)象。C)原型(Prototype)模式(9)在不破壞類(lèi)封裝性的基礎(chǔ)上,使得類(lèi)可以同不曾估計(jì)到的系統(tǒng)進(jìn)行交互。主要體現(xiàn)在( AD )。 A)適配器(Adapter)模式D)橋接(Bridge)模式(10)結(jié)構(gòu)型模式中最體現(xiàn)擴(kuò)展性的幾種模式是( C ) C)裝飾(Decorator)模式(11)行為類(lèi)模式使用( C )在類(lèi)間分派行為。C)對(duì)象組合 (12)
15、以下屬于行為對(duì)象模式的是(ABCD ) A)模板(Template Method)模式 B)迭代器(Iterator)模式C)命令(Command)模式D)觀察者(Observer)模式(13)封裝分布于多個(gè)類(lèi)之間的行為的模式是( C ) C)訪問(wèn)者(Visitor)模式(14)Observer(觀察者)模式適用于(C)。(C)當(dāng)一個(gè)對(duì)象必須通知其它對(duì)象,而它又不能假定其它對(duì)象是誰(shuí)。也就是說(shuō)你不希望這些對(duì)象是緊耦合的。(15)Java的異常處理機(jī)制可理解為哪一種行為模式( C )。C)職責(zé)鏈(Chain of Responsibility)模式二、 填空題(分值20)1. (單一職責(zé))原則的核
16、心思想是系統(tǒng)中的每一個(gè)對(duì)象都應(yīng)該只有一個(gè)單獨(dú)的職責(zé),而所有對(duì)象所關(guān)注的就是自身職責(zé)的完成。2. ( 開(kāi)閉 )原則的核心思想是一個(gè)對(duì)象對(duì)擴(kuò)展開(kāi)放,對(duì)修改關(guān)閉;實(shí)現(xiàn)此原則的關(guān)鍵就在于( 抽象 )、分離出( 擴(kuò)展 )部分和( 修改 )部分。3. (里氏替換)原則的核心思想是在任何父類(lèi)出現(xiàn)的地方都可以用它的子類(lèi)來(lái)替代。4. (依賴倒置)原則的核心思想是要依賴于抽象,而不要依賴于具體的實(shí)現(xiàn)。5. (接口隔離)原則的核心思想是不應(yīng)該強(qiáng)迫客戶程序依賴于他們不用的方法。即一個(gè)接口不需要提供太多的行為,應(yīng)該只提供一種對(duì)外的功能,不應(yīng)該把所有的操作都封裝在一個(gè)接口中。6. (迪米特)原則的核心思想是一個(gè)對(duì)象應(yīng)當(dāng)對(duì)
17、其它對(duì)象盡可能少的了解?;蛘哒f(shuō),只和你的朋友說(shuō)話。這樣一些對(duì)象可以看做朋友:當(dāng)前對(duì)象本身、通過(guò)方法的參數(shù)傳遞進(jìn)來(lái)的對(duì)象、當(dāng)前對(duì)象所創(chuàng)建的對(duì)象、當(dāng)前對(duì)象的實(shí)例變量所引用的對(duì)象和方法內(nèi)所創(chuàng)建或者實(shí)例化的對(duì)象。7. (優(yōu)先使用組合)原則的核心思想是優(yōu)先使用組合而非繼承。8. 設(shè)計(jì)模式應(yīng)該面向( 對(duì)象 )編程三、 判斷題(分值10)1. 單一職責(zé)原則表現(xiàn)在面向?qū)ο蟮某绦蛑芯褪恰案邇?nèi)聚、低耦合”。(T) 2. 設(shè)計(jì)模式只能遵從使用,不能也無(wú)需創(chuàng)新。(F)3. 在面向?qū)ο缶幊虝r(shí),無(wú)論何時(shí)何地都要使用GoF所給出的設(shè)計(jì)模式,這樣編寫(xiě)的代碼才比較好。( F)4. 工廠方法能夠提高內(nèi)聚性,松散耦合,并且有助于測(cè)
18、試。( F )5. 對(duì)象要么構(gòu)造其它對(duì)象,要么使用其它對(duì)象,絕不要兩者兼顧。( T )問(wèn)答題1、單例模式的兩種實(shí)現(xiàn)方法,并說(shuō)明優(yōu)缺點(diǎn)?(1)懶漢式,在類(lèi)被加載時(shí),唯一的實(shí)例已經(jīng)被創(chuàng)建。這個(gè)模式在java中很容易實(shí)現(xiàn),在其他語(yǔ)言中很難.(2)餓漢式,在類(lèi)加載的時(shí)候不創(chuàng)建單例實(shí)體。只有在第一次請(qǐng)求實(shí)例的時(shí)候創(chuàng)建,并且只在第一次創(chuàng)建后不再創(chuàng)佳該類(lèi)的實(shí)例 2 、什么是對(duì)象粒度? 所謂的對(duì)象粒度就是對(duì)象從抽象到具體的描述的程度。同樣一個(gè)系統(tǒng),同樣的需求。兩個(gè)設(shè)計(jì)師給出兩種設(shè)計(jì)。兩個(gè)設(shè)計(jì)代碼行數(shù)差不多,但是類(lèi)的數(shù)目不同。例如有一個(gè)對(duì)象,我可以用10行代碼去構(gòu)造它,我也可以用20行代碼,后者比前者更為精確。
19、3、MVC模式是個(gè)復(fù)合模式,請(qǐng)寫(xiě)出你兩種你所知道的MVC中使用的模式。(1)觀察者模式:定義對(duì)象間的一種一對(duì)多的依賴關(guān)系,當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生改變時(shí),所有依賴于它的對(duì)象都得到通知并被自動(dòng)更新。 (2)策略模式:定義了算法族,分別封裝起來(lái),讓他們之間可以相互替換,此模式讓算法的變化獨(dú)立于使用算法的客戶。4、舉例說(shuō)明,適配器模式和裝配器在Java IO中的應(yīng)用。(1裝飾者模式:在由InputStream,OutputStream,Reader和Writer代表的等級(jí)結(jié)構(gòu)內(nèi)部,有一些流處理器可以對(duì)另一些流處理器起到裝飾作用,形成新的,具有改善了的功能的流處理器。裝飾者模式是Java I/
20、O庫(kù)的整體設(shè)計(jì)模式。這樣的一個(gè)原則是符合裝飾者模式的(2適配器模式:在由InputStream,OutputStream,Reader和Writer代表的等級(jí)結(jié)構(gòu)內(nèi)部,有一些流處理器是對(duì)其它類(lèi)型的流源的適配。這就是適配器模式的應(yīng)用,適配器模式應(yīng)用到了原始流處理器的設(shè)計(jì)上面,構(gòu)成了I/O庫(kù)所有流處理器的起點(diǎn)。5、 在面向?qū)ο蟪绦蛟O(shè)計(jì)中,常常需要避免過(guò)多case語(yǔ)句或者if語(yǔ)句,請(qǐng)給出一種設(shè)計(jì)模式避免過(guò)多的條件分支語(yǔ)句,同時(shí)指出這種設(shè)計(jì)模式如何幫助避免過(guò)多的Case語(yǔ)句?訪問(wèn)者模式。例如switch(pt) case A: break; case B: b
21、reak; . 1.把每個(gè)條件作成一個(gè)類(lèi),比如 A條件 class A public void accept() /處理邏輯 2、然后把每個(gè)條件的處理方法都用一個(gè)類(lèi)來(lái)管理. public class CommonVisitor public void visit(A a) a.accept();/其他條件的訪問(wèn)方法 public void visit(B b) b.accept();3、main里面就這樣調(diào)用就行. public static void main(Stirng args) CommonVisitor visitor = new
22、 CommonVisitor();/如果是想用A條件,則 visitor.visit(new A();這樣寫(xiě)的好處,以后先加條件的話我只需要定義新的條件類(lèi)就行,還有就是在CommonVisitor添加新條件的訪問(wèn)方法就行,這樣就很好作到一個(gè)條件管理一個(gè)邏輯五、應(yīng)用題(分值10)某房地產(chǎn)公司欲開(kāi)發(fā)一套房產(chǎn)信息管理系統(tǒng),根據(jù)如下描述選擇合適的設(shè)計(jì)模式進(jìn)行設(shè)計(jì): (1) 該公司有多種房型,如公寓、別墅等,在將來(lái)可能會(huì)增加新的房型;(2) 銷(xiāo)售人員每售出一套房子,主管將收到相應(yīng)的銷(xiāo)售消息。如果對(duì)上述場(chǎng)景編程,那么上述(1)和(2)可能分別用到哪些設(shè)計(jì)模式? 對(duì)于描述(1)可以選擇使用工廠方法
23、模式,對(duì)于描述(2)可以選擇使用觀察者模式,本題參考類(lèi)圖如下所示:1. 設(shè)計(jì)模式具有的優(yōu)點(diǎn)( A )。A. 適應(yīng)需求變化2. 下圖描述了一種設(shè)計(jì)模式(Client),該設(shè)計(jì)模式不可以( A )。A. 動(dòng)態(tài)決定由一組對(duì)象中某個(gè)對(duì)象處理該請(qǐng)求3. 若系統(tǒng)中的某子模塊需要為其它模塊提供訪問(wèn)不同數(shù)據(jù)庫(kù)系統(tǒng)(Oracle、SQL Server、DB2 UDB 等)的功能, ( B )設(shè)計(jì)模式可抽象出相同的數(shù)據(jù)庫(kù)訪問(wèn)過(guò)程;B. 裝飾 4. 系統(tǒng)中的文本顯示類(lèi)(TextView)和圖片顯示類(lèi)(PictureView)都繼承了組件類(lèi)(Component),但希望最多只增加三個(gè)類(lèi),( B )設(shè)計(jì)模式可以實(shí)現(xiàn)該目
24、的。B. 裝飾5. 下面的類(lèi)圖表示的是哪個(gè)模式AbstractFactory( A ) A. 抽象工廠模式6. 下面的類(lèi)圖表示的是哪個(gè)設(shè)計(jì)模式Subject( D ) D. 觀察者模式(Observer)7. 下面的類(lèi)圖表示的是哪個(gè)模式Façade( B ) B. 外觀模式(Facade)8. 下面的類(lèi)圖表明了哪個(gè)模式Product( D ) D. 工廠方法模式(Factory Method)9. 下面的類(lèi)圖表示的是哪個(gè)設(shè)計(jì)模式Context( D ) D. 狀態(tài)模式(State)10. 下面的類(lèi)圖表明了哪個(gè)模式Singleton( C ) C. 單例模式(Singleton)二、
25、填空題(分值20)1(工廠方法)模式中,父類(lèi)負(fù)責(zé)定義創(chuàng)建對(duì)象的公共接口,子類(lèi)則負(fù)責(zé)生成具體的對(duì)象。2.(抽象工廠)模式提供一系列相關(guān)或相互依賴對(duì)象的接口而無(wú)需指定它們具體的類(lèi)。3(原型)模式用原型實(shí)例指定創(chuàng)建對(duì)象的種類(lèi),并且通過(guò)拷貝這些原型實(shí)例創(chuàng)建新的對(duì)象。4(單例)模式確保某一個(gè)類(lèi)僅有一個(gè)實(shí)例,并自行實(shí)例化并向整個(gè)系統(tǒng)提供這個(gè)實(shí)例。5 (組合)模式將對(duì)象組合成樹(shù)形結(jié)構(gòu)以表示“部分-整體”的層次結(jié)構(gòu)。使得用戶對(duì)單個(gè)對(duì)象和組合對(duì)象的使用具有一致性。6 (外觀)模式定義了一個(gè)高層接口,這個(gè)接口使得這一子系統(tǒng)更加容易使用,為子系統(tǒng)中的一組接口提供一個(gè)一致的界面。7 (享元)模式運(yùn)用共享技術(shù)有效地支持
26、大量細(xì)粒度的對(duì)象。8 (責(zé)任鏈)模式使多個(gè)對(duì)象都有機(jī)會(huì)處理請(qǐng)求,從而避免請(qǐng)求的發(fā)送者和接收者之間的耦合關(guān)系。9 (觀察者)模式定義對(duì)象間的一種一對(duì)多的依賴關(guān)系,當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生改變時(shí), 所有依賴于它的對(duì)象都得到通知并被自動(dòng)更新。10 (模板方法)模式定義一個(gè)操作中的算法的骨架,而將一些步驟延遲到子類(lèi)中。三、簡(jiǎn)答題(分值30)關(guān)于設(shè)計(jì)模式,請(qǐng)回答:1、 什么是設(shè)計(jì)模式?設(shè)計(jì)模式的目標(biāo)是什么? (1)、設(shè)計(jì)模式是一套被反復(fù)使用,多數(shù)人知曉的,經(jīng)過(guò)分類(lèi)編寫(xiě)的代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)。(2)、目標(biāo):為了可重用代碼,讓代碼更容易被他人理解,保證代碼可靠性。2、 設(shè)計(jì)模式具有哪三大特點(diǎn)? (1)、可重用性,
27、對(duì)相同類(lèi)型問(wèn)題反復(fù)出現(xiàn),盡管問(wèn)題的環(huán)境有不同,但解決方案有效。(2)、可傳授性,問(wèn)題反復(fù)出現(xiàn),解決問(wèn)題的方案相同,大家都接受該解決方案。(3)、名稱,每個(gè)設(shè)計(jì)模式都有名稱。3、 GOF 設(shè)計(jì)模式常用的有幾種?GOF 設(shè)計(jì)模式按照模式的目的可分為哪三類(lèi)? (1)23中;(2)、結(jié)構(gòu)型,將現(xiàn)存的對(duì)象結(jié)合在一起。 行為性,提供一種顯得靈活變化的行為。 創(chuàng)建型,穿件或?qū)嵗瘜?duì)象1、簡(jiǎn)述面向?qū)ο蟪绦蛟O(shè)計(jì)的六大基本原則? 答:開(kāi)閉原則、里氏代換原則、依賴倒轉(zhuǎn)原則、合成/聚合復(fù)用原則、迪米特法則、接口隔離原則。2 、簡(jiǎn)述什么是單例模式,以及他解決的問(wèn)題,應(yīng)用的環(huán)境,解決的方案,模式的本質(zhì)?答;在任何時(shí)間內(nèi)只
28、有一個(gè)類(lèi)實(shí)例存在的模式。需要有一個(gè)從中進(jìn)行全局訪問(wèn)和維護(hù)某種類(lèi)型數(shù)據(jù)的區(qū)域的環(huán)境下使用單例模式。解決這個(gè)問(wèn)題的辦法是為指示類(lèi)是否已經(jīng)實(shí)例化的變量提供一個(gè)互斥鎖。解決方案就是保證一個(gè)類(lèi)只有一個(gè)類(lèi)實(shí)例存在。本質(zhì)就是實(shí)例共用同一塊內(nèi)存區(qū)域。3、為什么面向?qū)ο蟮姆治龊驮O(shè)計(jì)中優(yōu)先使用組合,而非繼承?答: 繼承關(guān)系有很多缺點(diǎn),如果合理使用組合則可以有效的避免這些缺點(diǎn),使用組合關(guān)系將系統(tǒng)對(duì)變化的適應(yīng)力從靜態(tài)提升到動(dòng)態(tài),而且由于組合將已有對(duì)象組合到了新對(duì)象中,因此新對(duì)象可以調(diào)用已有對(duì)象的功能。由于組合關(guān)系中各個(gè)對(duì)象的內(nèi)部實(shí)現(xiàn)是隱藏的,我們只能通過(guò)接口調(diào)用,因此我們完全可以在運(yùn)行期用實(shí)現(xiàn)了同樣接口的另外一個(gè)對(duì)象
29、來(lái)代替原對(duì)象,從而靈活實(shí)現(xiàn)運(yùn)行期的行為控制。而且使用合成關(guān)系有助于保持每個(gè)類(lèi)的職責(zé)的單一性,這樣類(lèi)的層次體系以及類(lèi)的規(guī)模都不太可能增長(zhǎng)為不可控制的龐然大物。在下面的C+代碼中,類(lèi)SalesTicket能夠完成打印票據(jù)正文的功能,闡述采用該設(shè)計(jì)模式該代碼采用裝飾(Decorator)設(shè)計(jì)模式實(shí)現(xiàn)。采用該設(shè)計(jì)模式的目的能夠動(dòng)態(tài)地給一個(gè)對(duì)象增加一些新的職責(zé)不不需要采用生成子類(lèi)的方法。可以讓客戶選擇給該類(lèi)對(duì)象附加新的功能的時(shí)機(jī)以及是否增加新職責(zé)。比生成子類(lèi)的方法更為靈活。主任可以審批1 萬(wàn)元以下的采購(gòu)單,副董事長(zhǎng)可以申批2.5 萬(wàn)元以下的采購(gòu)單,董事長(zhǎng)可以審批10萬(wàn)元以下的采購(gòu)單,10 萬(wàn)元以上的采購(gòu)
30、單就需要開(kāi)會(huì)決定。選擇設(shè)計(jì)模式并其類(lèi)圖。責(zé)任鏈模式:一、1. 以動(dòng)作和事務(wù)聞名,且以對(duì)象形式用來(lái)封:B命令模式2. 以下不屬于創(chuàng)建型模式是 ( A ) PROXY(代理)3. 以下不屬于結(jié)構(gòu)型模式是 ( D ) D. SINGLETON(單例)4、以下不屬于行為型模式是( D ) MEMENTO(備忘錄)5、以下意圖那個(gè)是用來(lái)描述BUILDER(生成器)( B ) 將一個(gè)復(fù)雜對(duì)象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過(guò)程可以創(chuàng)建不同的表示。6、以下意圖那個(gè)是用來(lái)描述PROTOTYPE(原型)( D )D. 用原型實(shí)例指定創(chuàng)建對(duì)象的種類(lèi),并通過(guò)拷貝這些原型創(chuàng)建新的對(duì)象。7、以下意圖那個(gè)是用來(lái)描述A
31、DAPTER(適配器)( A )將一個(gè)類(lèi)的接口轉(zhuǎn)換成客戶希望的另外一個(gè)接口。本模式使得原本由于接口不兼容而不能一起工作的那些類(lèi)可以一起工作。8. 以下意圖那個(gè)是用來(lái)描述BRIDGE(橋接)( B )B. 將抽象部分與它的實(shí)現(xiàn)部分分離,使它們都可以獨(dú)立地變化。9. 以下哪個(gè)意圖是用來(lái)描述COMPOSITE(組合)?( C ) 將對(duì)象組合成樹(shù)形結(jié)構(gòu)以表示部分-整體的層次結(jié)構(gòu)。10、以下那個(gè)是用來(lái)描述DECORATOR(裝飾)( D ) 動(dòng)態(tài)地給一個(gè)對(duì)象添加一些額外的職責(zé)。11、以下意圖那個(gè)是用來(lái)描述 FACADE(外觀)?( A ) 為子系統(tǒng)中的一組接口提供一個(gè)一致的界面,本模式定義了一個(gè)高層接口
32、,這個(gè)接口使得這一子系統(tǒng)更加容易使用。12、以下意圖那個(gè)是用來(lái)描述FLYWEIGHT(享元)( B )B. 運(yùn)用共享技術(shù)有效地支持大量細(xì)粒度的對(duì)象。13、以下意圖那個(gè)是用來(lái)描述 PROXY(代理)( C )C. 為其他對(duì)象提供一種代理以控制對(duì)這個(gè)對(duì)象的訪問(wèn)。14、以下意圖那個(gè)是用來(lái)描述CHAIN OF RESPONSIBILITY(職責(zé)鏈)?( D )D.使多個(gè)對(duì)象都有機(jī)會(huì)處理請(qǐng)求,從而避免請(qǐng)求的發(fā)送者和接收者之間的耦合關(guān)系。15、以下意圖那個(gè)是用來(lái)描述 COMMAND(命令)( A )A、將一個(gè)請(qǐng)求封裝為一個(gè)對(duì)象;對(duì)請(qǐng)求排隊(duì)或記錄請(qǐng)求日志,以及支持可撤消的操作1. (命令)模式把一個(gè)請(qǐng)求或操作封裝到一個(gè)對(duì)象中。2. (裝飾)模式封裝一些施加于某種數(shù)據(jù)結(jié)構(gòu)元素之上的操作,這樣修改操作不影響數(shù)據(jù)結(jié)構(gòu)。3. (外觀)模式為子系統(tǒng)對(duì)外提供的一組接口提供一個(gè)統(tǒng)一的界面。4. (策略)模式針對(duì)一組算法,將每一個(gè)算法封裝到具有共同接口的獨(dú)立的類(lèi)中,從而使算法可相互替換。5. (觀察者)模式讓多個(gè)對(duì)象同時(shí)監(jiān)聽(tīng)某一個(gè)主題對(duì)象,主題對(duì)象的變化會(huì)通知監(jiān)聽(tīng)對(duì)象,使得監(jiān)聽(tīng)對(duì)象可以自動(dòng)更新。6. (適配器)模式把一個(gè)類(lèi)的接口變換成客戶端所期待的另一種接口。7. (訪問(wèn)者)模式以對(duì)客戶端透明方式擴(kuò)展對(duì)象的功能。8. (簡(jiǎn)單工廠)模式定義一個(gè)具體的工廠類(lèi)來(lái)負(fù)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 四川省巴中市(2024年-2025年小學(xué)六年級(jí)語(yǔ)文)統(tǒng)編版期中考試(上學(xué)期)試卷及答案
- 個(gè)人原因離職報(bào)告范文9篇
- 非典型擔(dān)保與典型擔(dān)保的體系融合
- 四川省內(nèi)江市(2024年-2025年小學(xué)六年級(jí)語(yǔ)文)部編版隨堂測(cè)試(上學(xué)期)試卷及答案
- 防雷基本知識(shí)簡(jiǎn)介
- 高考班級(jí)口號(hào)(匯編15篇)
- 廣東省深圳市(2024年-2025年小學(xué)六年級(jí)語(yǔ)文)統(tǒng)編版隨堂測(cè)試(上學(xué)期)試卷及答案
- -銷(xiāo)售年終總結(jié)怎么寫(xiě)
- 員工調(diào)崗申請(qǐng)書(shū)模板集錦九篇
- 基于信息化的物流設(shè)備管理精益改善研究
- 電動(dòng)托盤(pán)搬運(yùn)車(chē)操作規(guī)程范文(2篇)
- 教育部中國(guó)特色學(xué)徒制課題:基于中國(guó)特色學(xué)徒制的“金教師”團(tuán)隊(duì)建設(shè)研究
- 【MOOC】輪滑高級(jí)教程-東北大學(xué) 中國(guó)大學(xué)慕課MOOC答案
- 【MOOC】診斷學(xué)-山東大學(xué) 中國(guó)大學(xué)慕課MOOC答案
- 周1530安全教育記錄
- 建筑工程管理與實(shí)務(wù)二級(jí)建造師考試試卷及解答參考
- 中國(guó)非遺文化魚(yú)燈介紹2
- 政府采購(gòu)評(píng)審專家考試試題庫(kù)(完整版)
- 色彩原理與應(yīng)用智慧樹(shù)知到期末考試答案章節(jié)答案2024年上海出版印刷高等??茖W(xué)校
- GB/T 34281-2017全民健身活動(dòng)中心分類(lèi)配置要求
- 拼音四線三格加田字格模板(A4打印版可編輯打字)
評(píng)論
0/150
提交評(píng)論