軟件體系結(jié)構(gòu)與設(shè)計模式期末復(fù)習(xí)_第1頁
軟件體系結(jié)構(gòu)與設(shè)計模式期末復(fù)習(xí)_第2頁
軟件體系結(jié)構(gòu)與設(shè)計模式期末復(fù)習(xí)_第3頁
軟件體系結(jié)構(gòu)與設(shè)計模式期末復(fù)習(xí)_第4頁
軟件體系結(jié)構(gòu)與設(shè)計模式期末復(fù)習(xí)_第5頁
已閱讀5頁,還剩50頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、體系結(jié)構(gòu)期末復(fù)習(xí)選擇題1 .設(shè)計模式的基本原理是(C)A.面向?qū)崿F(xiàn)編程B.面向?qū)ο缶幊藽.面向接口編程D.面向組合編程2 .設(shè)計模式的兩大主題是(D)A.系統(tǒng)的維護(hù)與開發(fā)B.對象組合與類的繼承C系統(tǒng)架構(gòu)與系統(tǒng)開發(fā)D.系統(tǒng)復(fù)用與系統(tǒng)擴展3 .依據(jù)設(shè)計模式思想,程序開發(fā)中應(yīng)優(yōu)先使用的是(A)關(guān)系實現(xiàn)復(fù)用。A.組合聚合B.繼承C.創(chuàng)建D.以上都不對4 .關(guān)于繼承表述錯誤的是(D)A.繼承是一種通過擴展一個已有對象的實現(xiàn),從而獲得新功能的復(fù)用方法。B.泛化類(超類)可以顯式地捕獲那些公共的屬性和方法。特殊類(子類)則通過附加屬性和方法來進(jìn)行實現(xiàn)的擴展。C.破壞了封裝性,因為這會將父類的實現(xiàn)細(xì)節(jié)暴露給子

2、類。D.繼承本質(zhì)上是白盒復(fù)用”,對父類的修改,不會影響到子類。5 .常用的設(shè)計模式可分為(A)A.創(chuàng)建型、結(jié)構(gòu)型和行為型B,對象型、結(jié)構(gòu)型和行為型C.過程型、創(chuàng)建型和結(jié)構(gòu)型D.抽象型、接口型和實現(xiàn)型6 .“不要和陌生人說話”是對(D)設(shè)計原則的通俗表述。A.接口隔離B.里氏代換7.在適配器模式中,對象適配器模式是對C.依賴倒轉(zhuǎn)D.迪米特法則(A)設(shè)計原則的典型應(yīng)用D.迪米特法則C)設(shè)計模式的描述D.單例模式D.外觀模式D.橋接模D.橋接模式A.合成聚合B.里氏代換C.依賴倒轉(zhuǎn)8 .將一個類的接口轉(zhuǎn)換成客戶希望的另一個接口,這句話是對(A.策略模式B.橋接模式C適配器模式9 .以下設(shè)計模式中屬于

3、結(jié)構(gòu)模式的是(D)A.觀察者模式B.單例模式C.策略模式10 .以下不屬于對象行為型模式是(D)A.命令模式B.策略模式C.訪問者模式式11 .下面的類圖表示的是哪個設(shè)計模式(D)A.抽象工廠模式B.觀察者模式C.策略模式12 .Open-Close開閉原則的含義是一個軟件實體(A)A.應(yīng)當(dāng)對擴展開放,對修改關(guān)閉。B.應(yīng)當(dāng)對修改開放,對擴展關(guān)閉。C應(yīng)當(dāng)對繼承開放,對修改關(guān)閉。D.以上都不對。13 .下面的類圖表示的是哪個設(shè)計模式(D)A.策略模式B.裝飾模式C.橋接模式D.觀察者模式14 .保證一個類僅有一個實例,并提供一個訪問它的全局訪問點。這句話是對(D)設(shè)計模式的描述。A.外觀模式B.策

4、略模式C.適配器模式D.單例模式15 .以下意圖哪個是用來描述組合模式?(C)A.為其他對象提供一種代理以控制對這個對象的訪問。B.運用共享技術(shù)有效地支持大量細(xì)粒度的對象。C.將對象組合成樹形結(jié)構(gòu)以表示“部分-整體”的層次結(jié)構(gòu)。D.將一個復(fù)雜對象的構(gòu)建與它的表示分離。16 .以下意圖哪個是用來描述命令模式?(A)A.將一個請求封裝為一個對象,從而使你可用不同的請求對客戶進(jìn)行參數(shù)化。B.定義一系列的算法,把它們一個個封裝起來,并且使它們可相互替換。C.為其他對象提供一種代理以控制對這個對象的訪問。D.保證一個類僅有一個實例,并提供一個訪問它的全局訪問點。17.以下哪種情況不適合使用適配器模式?(

5、D)A.你想使用一個已經(jīng)存在的類,而它的接口不符合你的需求。B.你想創(chuàng)建一個類,該類可以復(fù)用另外一個類的功能。C.你想創(chuàng)建一個類,該類可以復(fù)用另外多個類的功能。D.你想在類中用相對較少的對象引用取代很多對象的引用。18 .以下意圖哪個是用來描述觀察者模式?(B)A.將抽象部分與它的實現(xiàn)部分分離,使它們都可以獨立地變化。B.定義對象間的一種一對多的依賴關(guān)系,當(dāng)一個對象的狀態(tài)發(fā)生改變時,所有依賴于它的對象都得到通知并被自動更新。C.用原型實例指定創(chuàng)建對象的種類,并且通過拷貝這些原型創(chuàng)建新的對象。D.使多個對象都有機會處理請求,避免請求的發(fā)送者和接收者之間的耦合關(guān)系。19 .以下意圖哪個是用來描述狀

6、態(tài)模式?(C)A.使多個對象都有機會處理請求,避免請求的發(fā)送者和接收者之間的耦合關(guān)系。B.順序訪問一個聚合對象中各個元素,而又不需暴露該對象的內(nèi)部表示。C.允許一個對象在其內(nèi)部狀態(tài)改變時改變它的行為??雌饋硭坪跣薷牧怂念悺.捕獲一個對象的內(nèi)部狀態(tài),并在該對象之外保存這個狀態(tài)。20 .以下意圖哪個是用來描述策略模式?(D)A.將抽象部分與它的實現(xiàn)部分分離,使它們都可以獨立地變化。B.將一個復(fù)雜對象的構(gòu)建與它的表示分離。C.將抽象部分與它的實現(xiàn)部分分離,使它們都可以獨立地變化。D.定義一系列的算法,把它們一個個封裝起來,并且使它們可相互替換。12345678910CDADADACDD11121

7、314151617181920DADDCADBCD1 .要依賴于抽象,不要依賴于具體。即針又接口編程,不要針對實現(xiàn)編程,是(D)A.開閉原則B.接口隔離原則C里氏代換原則D.依賴倒轉(zhuǎn)原則2 .以下對"開-閉"原則的一些描述錯誤的是(A)A."開-閉"原則與"對可變性的封裝原則"沒有相似性。B.找到一個系統(tǒng)的可變元素,將它封裝起來,叫"開-閉"原則。C對修改關(guān)閉:是其原則之一。D.從抽象層導(dǎo)出一個或多個新的具體類可以改變系統(tǒng)的行為,是其原則之一。3 .依據(jù)設(shè)計模式思想,程序開發(fā)中應(yīng)優(yōu)先使用的是(B)關(guān)系實現(xiàn)復(fù)用。4.

8、5.A.繼承B.組合聚合C.創(chuàng)建D.以上都不對設(shè)計模式的兩大主題是(C)A.系統(tǒng)的維護(hù)與開發(fā)C系統(tǒng)復(fù)用與系統(tǒng)擴展常用的設(shè)計模式可分為(C)A.過程型、創(chuàng)建型和結(jié)構(gòu)型C.創(chuàng)建型、結(jié)構(gòu)型和行為型B.對象組合與類的繼承D.系統(tǒng)架構(gòu)與系統(tǒng)開發(fā)B.對象型、結(jié)構(gòu)型和行為型D.抽象型、接口型和實現(xiàn)型6.“知道的越少越好”是對(D)設(shè)計原則的通俗表述。A.接口隔離B.里氏代換C.依賴倒轉(zhuǎn)D.迪米特法則7.在適配器模式中,對象適配器模式是對(A)設(shè)計原則的典型應(yīng)用1.12.13.A.合成聚合B.里氏代換C.依賴倒轉(zhuǎn)D.迪米特法則觀察者模式定義了一種(A)的依賴關(guān)系A(chǔ).一對多B.多對多C.以下設(shè)計

9、模式中不屬于創(chuàng)建型模式的是A.工廠模式B.外觀模式對(B)CD.以上都不對生成器模式D.單例模式以下不屬于結(jié)構(gòu)型模式是(C)A.組合模式B.適配器模式訪問者模式D.橋接模式以下不屬于行為型模式是(B)A.迭代器模式B.外觀模式C.狀態(tài)模式將一個類的接口轉(zhuǎn)換成客戶希望的另一個接口,這句話是對(A.策略模式B.橋接模式C.適配器模式(C)D.策略模式C)設(shè)計模式的描述D.單例模式卜面的類圖表示的是哪個設(shè)計模式D.觀察者模式B.裝飾模式C.適配器模式A.策略模式命令模式B.組合模式C.卜面的類圖表示的是哪個設(shè)計模式(B)并提供一個訪問它的全局訪問點。這句話是對D.觀察者模式(D)設(shè)計模式14.A.橋

10、接模式15.保證一個類僅有一個實例,的描述。A.外觀模式B.策略模式C適配器模式D.單例模式16 .以下哪項不是橋接模式的優(yōu)點?A.分離接口及其實現(xiàn)部分。C改變值以指定新對象。17 .在觀察者模式中,表述錯誤的是?(C)B.D.(C)提高可擴充性。實現(xiàn)細(xì)節(jié)對客戶透明。A.B.C態(tài)進(jìn)行。觀察者角色的更新是被動的。被觀察者可以通知觀察者進(jìn)行更新。觀察者可以改變被觀察者的狀態(tài),再由被觀察者通知所有觀察者依據(jù)被觀察者的狀D.以上表述全部錯誤。18 .當(dāng)我們想創(chuàng)建一個具體的對象而又不希望指定具體的類時,可以使用(A)模式A.創(chuàng)建型B.結(jié)構(gòu)型C.行為型D.以上都不對19 .以下意圖哪個是用來描述狀態(tài)模式?

11、(C)A.使多個對象都有機會處理請求,避免請求的發(fā)送者和接收者之間的耦合關(guān)系。B.順序訪問一個聚合對象中各個元素,而又不需暴露該對象的內(nèi)部表示。C.允許一個對象在其內(nèi)部狀態(tài)改變時改變它的行為。看起來似乎修改了它的類。D.捕獲一個對象的內(nèi)部狀態(tài),并在該對象之外保存這個狀態(tài)。20.以下意圖哪個是用來描述組合模式?(C)A.為其他對象提供一種代理以控制對這個對象的訪問。B.運用共享技術(shù)有效地支持大量細(xì)粒度的對象。C.將對象組合成樹形結(jié)構(gòu)以表示“部分-整體”的層次結(jié)構(gòu)。D.將一個復(fù)雜對象的構(gòu)建與它的表示分離。12345678910DABCCDAABC11121314151617181920BCCBDC

12、CACC1 .常用的設(shè)計模式可分為(A)B.對象型、結(jié)構(gòu)型和行為型D.抽象型、接口型和實現(xiàn)型A.創(chuàng)建型、結(jié)構(gòu)型和行為型C.過程型、創(chuàng)建型和結(jié)構(gòu)型2 .“不要和陌生人說話”是對(D)設(shè)計原則的通俗表述。A.接口隔離B.里氏代換3.在適配器模式中,對象適配器模式是對A.合成聚合B.里氏代換C.依賴倒轉(zhuǎn)D.迪米特法則(A)設(shè)計原則的典型應(yīng)用C.依賴倒轉(zhuǎn)D.迪米特法則C)設(shè)計模式的描述D.單例模式D.適配器模式C狀態(tài)模式A.抽象工廠模式B.橋接模式圖14 .將一個類的接口轉(zhuǎn)換成客戶希望的另一個接口,這句話是對(A.策略模式B.橋接模式C.適配器模式5 .以下設(shè)計模式中屬于結(jié)構(gòu)模式的是(D)A.觀察者模

13、式B.單例模式C.迭代器模式6 .以下意圖哪個是用來描述命令模式?(A)A.將一個請求封裝為一個對象,從而使你可用不同的請求對客戶進(jìn)行參數(shù)化。B.定義一系列的算法,把它們一個個封裝起來,并且使它們可相互替換。C.為其他對象提供一種代理以控制對這個對象的訪問。D.保證一個類僅有一個實例,并提供一個訪問它的全局訪問點。7 .下面的類圖表示的是哪個設(shè)計模式(D)D.適配器模式8 .Open-Close開閉原則的含義是一個軟件實體(A)A.應(yīng)當(dāng)對擴展開放,對修改關(guān)閉。8 .應(yīng)當(dāng)對修改開放,對擴展關(guān)閉。C.應(yīng)當(dāng)對繼承開放,對修改關(guān)閉。D.以上都不對。9 .以下意圖哪個是用來描述組合模式?(C)A.為其他

14、對象提供一種代理以控制對這個對象的訪問。B.運用共享技術(shù)有效地支持大量細(xì)粒度的對象。C.將對象組合成樹形結(jié)構(gòu)以表示“部分-整體”的層次結(jié)構(gòu)。D.將一個復(fù)雜對象的構(gòu)建與它的表示分離。10 .以下意圖哪個是用來描述狀態(tài)模式?(C)A.使多個對象都有機會處理請求,避免請求的發(fā)送者和接收者之間的耦合關(guān)系。B.順序訪問一個聚合對象中各個元素,而又不需暴露該對象的內(nèi)部表示。C.允許一個對象在其內(nèi)部狀態(tài)改變時改變它的行為??雌饋硭坪跣薷牧怂念?。D.捕獲一個對象的內(nèi)部狀態(tài),并在該對象之外保存這個狀態(tài)。12345678910ADACDADACC(四)1 .當(dāng)我們想創(chuàng)建一個具體的對象而又不希望指定具體的類時,可

15、以使用(A膜式A.創(chuàng)建型B.結(jié)構(gòu)型C.行為型D.以上都不對2 .以下對"開-閉"原則的一些描述錯誤的是(A)A."開-閉"原則與"對可變性的封裝原則"沒有相似性。B.找到一個系統(tǒng)的可變元素,將它封裝起來,叫"開-閉"原則。C對修改關(guān)閉:是其原則之一。D.從抽象層導(dǎo)出一個或多個新的具體類可以改變系統(tǒng)的行為,是其原則之一。3 .依據(jù)設(shè)計模式思想,程序開發(fā)中應(yīng)優(yōu)先使用的是(B)關(guān)系實現(xiàn)復(fù)用。A.繼承B.組合聚合C.創(chuàng)建D.以上都不對4 .“知道的越少越好”是對(D)設(shè)計原則的通俗表述。A.接口隔離B.里氏代換C.依賴倒轉(zhuǎn)

16、D.迪米特法則5 .在適配器模式中,對象適配器模式是對(A)設(shè)計原則的典型應(yīng)用A.合成聚合B.里氏代換C.依賴倒轉(zhuǎn)D.迪米特法則6 .保證一個類僅有一個實例,并提供一個訪問它的全局訪問點。這句話是對(D)設(shè)計模式的描述。A.外觀模式B.策略模式C.適配器模式D.單例模式7 .以下意圖哪個是用來描述策略模式?(D)A.將抽象部分與它的實現(xiàn)部分分離,使它們都可以獨立地變化。8 .將一個復(fù)雜對象的構(gòu)建與它的表示分離。C.將抽象部分與它的實現(xiàn)部分分離,使它們都可以獨立地變化。D.定義一系列的算法,把它們一個個封裝起來,并且使它們可相互替換。8 .以下不屬于結(jié)構(gòu)型模式是(C)A.組合模式B.適配器模式C

17、.訪問者模式D.橋接模式9 .下面的類圖表示的是哪個設(shè)計模式(D)hnploii印干口產(chǎn)rafiw川AIriiplcrcnKir.Oprnniwilnipi+D產(chǎn)n而mH(mpORrfinriLAlnJrutiiuCurtirilvlnEpIlfdcjilur.AC'uHUTLidniphitiriiturlSwpenturlnipiA.策略模式C.適配器模式B.狀態(tài)模式D.橋接模式10 .以下意圖哪個是用來描述狀態(tài)模式?(C)A.使多個對象都有機會處理請求,避免請求的發(fā)送者和接收者之間的耦合關(guān)系。B.順序訪問一個聚合對象中各個元素,而又不需暴露該對象的內(nèi)部表示。D.C.允許一個對象在

18、其內(nèi)部狀態(tài)改變時改變它的行為??雌饋硭坪跣薷牧怂念悺2东@一個對象的內(nèi)部狀態(tài),并在該對象之外保存這個狀態(tài)。12345678910AABDADDCDC(五)1.常用的設(shè)計模式可分為(A)A.創(chuàng)建型、結(jié)構(gòu)型和行為型C.過程型、創(chuàng)建型和結(jié)構(gòu)型B,對象型、結(jié)構(gòu)型和行為型D.抽象型、接口型和實現(xiàn)型2.“不要和陌生人說話”A.接口隔離是對(D)設(shè)計原則的通俗表述。B.里氏代換3.在適配器模式中,對象適配器模式是對C.依賴倒轉(zhuǎn)D.迪米特法則(A)設(shè)計原則的典型應(yīng)用4.5.6.A.B.C.7.A.合成聚合B.里氏代換將一個類的接口轉(zhuǎn)換成客戶希望的另一個接口,A.策略模式B.橋接模式C.C.依賴倒轉(zhuǎn)這句話是對(

19、適配器模式D.迪米特法則C)設(shè)計模式的描述D.單例模式以下設(shè)計模式中屬于結(jié)構(gòu)模式的是(D)A.觀察者模式B.單例模式C.迭代器模式D.適配器模式以下意圖哪個是用來描述命令模式?(A)將一個請求封裝為一個對象,從而使你可用不同的請求對客戶進(jìn)行參數(shù)化。定義一系列的算法,把它們一個個封裝起來,并且使它們可相互替換。為其他對象提供一種代理以控制對這個對象的訪問。D.保證一個類僅有一個實例,并提供一個訪問它的全局訪問點。卜面的類圖表示的是哪個設(shè)計模式(D)A.抽象工廠模式B.橋接模式C.狀態(tài)模式D.適配器模式圖18.Open-Close開閉原則的含義是一個軟件實體(A)A.應(yīng)當(dāng)對擴展開放,對修改關(guān)閉。8

20、 .應(yīng)當(dāng)對修改開放,對擴展關(guān)閉。C.應(yīng)當(dāng)對繼承開放,對修改關(guān)閉。D.以上都不對。9 .以下意圖哪個是用來描述組合模式?(C)A.為其他對象提供一種代理以控制對這個對象的訪問。B.運用共享技術(shù)有效地支持大量細(xì)粒度的對象。C.將對象組合成樹形結(jié)構(gòu)以表示“部分-整體”的層次結(jié)構(gòu)。D.將一個復(fù)雜對象的構(gòu)建與它的表示分離。10 .以下意圖哪個是用來描述狀態(tài)模式?(C)A.使多個對象都有機會處理請求,避免請求的發(fā)送者和接收者之間的耦合關(guān)系。B.順序訪問一個聚合對象中各個元素,而又不需暴露該對象的內(nèi)部表示。C.允許一個對象在其內(nèi)部狀態(tài)改變時改變它的行為??雌饋硭坪跣薷牧怂念?。D.捕獲一個對象的內(nèi)部狀態(tài),并

21、在該對象之外保存這個狀態(tài)。12345678910ADACDADACC、填空題1 .面向?qū)ο蟮钠邨l設(shè)計原則包括:單一職責(zé)原則,,合成聚合原則,接口隔離原則以及。其中外觀模式是原則的典型應(yīng)用。2 .工廠模式中分為,工廠方法,三種模式。其中,可以應(yīng)用平行等級結(jié)構(gòu)完成創(chuàng)建工作的模式是模式。3 .適配器模式,可以細(xì)分為適配器和適配器兩種實現(xiàn)。其中適配器采用的是繼承復(fù)用,而適配器采用的是合成聚合復(fù)用。4 .JavaAPI中,有兩個與觀察者模式相關(guān)的類和接口,分別是Observable和Observer,Observer的Update函數(shù)中用到的兩個參數(shù)的參數(shù)類型是和。5 .事件體系結(jié)構(gòu)中的三個基本角色包括

22、事件源、和。其中在編程時一定要將注冊添加到事件源中。6 .單例模式有兩種方式實現(xiàn),分別為和。它們共同的特征是構(gòu)造函數(shù)的訪問屬性必須是。答案:1、開閉原則里氏代換原則依賴倒轉(zhuǎn)原則迪米特法則迪米特法則2、簡單工廠抽象工廠工廠方法3、類對象類對象4、ObservableObject5、事件事件監(jiān)聽者事件監(jiān)聽者6、俄漢式懶漢式私有(private)1 .面向?qū)ο蟮钠邨l設(shè)計原則包括:,開閉原則,,依賴倒轉(zhuǎn)原則,,接口隔離原則以及。其中外觀模式是原則的典型應(yīng)用。2 .工廠模式中分為簡單工廠,,三種模式。其中,可以應(yīng)用平行等級結(jié)構(gòu)完成創(chuàng)建工作的模式是模式。3 .適配器模式,可以細(xì)分為適配器和適配器兩種實現(xiàn)。

23、其中適配器采用的是繼承復(fù)用,而適配器采用的是合成聚合復(fù)用。4 .JavaAPI中,有兩個與觀察者模式相關(guān)的類和接口,分別是Observable和Observer,Observer的Update函數(shù)中用到的兩個參數(shù)的參數(shù)類型是和。5 .事件體系結(jié)構(gòu)中的三個基本角色包括、和。6 .單例模式有兩種方式實現(xiàn),分別為和。其中能夠?qū)崿F(xiàn)類被加載時就同時生成類的實例。答案:1、單一職責(zé)原則里氏代換原則合成聚合原則迪米特法則迪米特法則2、工廠方法抽象工廠工廠方法3、類對象類對象4、ObservableObject5、事件源事件事件監(jiān)聽者6、俄漢式懶漢式餓漢式1 .面向?qū)ο蟮钠邨l設(shè)計原則包括:單一職責(zé)原則,,里氏

24、代換原則,,合成聚合原則,接口隔離原則以及。2 .工廠模式中分為簡單工廠,和三種模式。3 .JavaAPI中,有兩個與觀察者模式相關(guān)的類和接口,分別是和4 .單例模式有兩種方式實現(xiàn),分別稱為和。它們共同的特征是構(gòu)造函數(shù)的訪問修飾符必須是。答案:1、開閉原則、依賴倒轉(zhuǎn)原則、迪米特法則2、工廠方法、抽象工廠(方法)3、Observable、Observer4、懶漢式俄漢式、private(私有的)(四)1 .面向?qū)ο蟮钠邨l設(shè)計原則包括:,開閉原則,,依賴倒轉(zhuǎn)原則,,接口隔離原則以及。2 .適配器模式,可以細(xì)分為適配器和適配器兩種實現(xiàn)。其中適配器采用的是繼承復(fù)用。3 .能夠定義對象間的一種“一對多”

25、的依賴關(guān)系,當(dāng)一個對象的狀態(tài)改變,所有依賴于它的對象都能得到通知并自動更新的設(shè)計模式的名稱是。4 .單例模式中能夠?qū)崿F(xiàn)延時加載的方式,稱為,實現(xiàn)即時加載的方式稱為O答案:1 .單一職責(zé)原則、里氏代換原則、合成聚合原則、迪米特法則2 .類、對象、類3 .觀察者模式4 .懶漢式、餓漢式(五)1 .面向?qū)ο蟮钠邨l設(shè)計原則包括:單一職責(zé)原則,,里氏代換原則,,合成聚合原則,接口隔離原則以及。2 .工廠模式中分為簡單工廠,和三種模式。3 .適配器模式,可以細(xì)分為適配器和適配器兩種實現(xiàn)。4 .單例模式有兩種方式實現(xiàn),分別稱為和。它們共同的特征是構(gòu)造函數(shù)的訪問修飾符必須是。答案:1 .開閉原則、依賴倒轉(zhuǎn)原則

26、、迪米特法則2 .工廠方法、抽象工廠(方法)3、類、對象4、懶漢式、餓漢式、private(私有的)三、判斷題1 .開閉原則的關(guān)鍵是抽象化。2 .在軟件開發(fā)中,如果要實現(xiàn)復(fù)用,應(yīng)盡量較多使用繼承,較少使用合成聚合的方式。3 .當(dāng)一個對象的行為取決于它所處的狀態(tài)時,這時我們應(yīng)該使用橋接模式4 .適配器模式是一種創(chuàng)建型設(shè)計模式5 .MVC結(jié)構(gòu)中模型和視圖之間交互的實現(xiàn)可以基于觀察者模式,其中模型是被觀察者。答案:1.V2.X3.X4.X5.V1 .設(shè)計模式的基本原理是面向?qū)崿F(xiàn)編程。2 .在軟件開發(fā)中,如果要實現(xiàn)復(fù)用,應(yīng)盡量較多使用繼承,較少使用合成聚合的方式。3 .當(dāng)一個對象的行為取決于它所處的狀

27、態(tài)時,這時我們應(yīng)該使用狀態(tài)模式4 .適配器模式是一種創(chuàng)建型設(shè)計模式5 .MVC結(jié)構(gòu)中模型和視圖之間交互的實現(xiàn)可以基于觀察者模式,其中模型是被觀察者。答案:1.X2.X3.V4.X5.V1 .開閉原則的關(guān)鍵是抽象化。2 .在軟件開發(fā)中,如果要實現(xiàn)復(fù)用,應(yīng)盡量較多使用繼承,較少使用合成聚合的方式。3 .當(dāng)一個對象的行為取決于它所處的狀態(tài)時,這時我們應(yīng)該使用橋接模式。4 .適配器模式是一種創(chuàng)建型設(shè)計模式。5 .命令模式標(biāo)準(zhǔn)類圖中的Receiver不是必須存在的。答案:12345VXXXV(四)1 .設(shè)計模式的基本原理是面向?qū)崿F(xiàn)編程。2 .在軟件開發(fā)中,如果要實現(xiàn)復(fù)用,應(yīng)盡量較多使用繼承,較少使用合成

28、聚合的方式。3 .當(dāng)一個軟件需要實現(xiàn)操作可撤銷的功能時,我們應(yīng)該使用命令模式。4 .迭代器模式是一種結(jié)構(gòu)型設(shè)計模式。5 .抽象工廠方法完全符合開閉模式。答案:12345XXVXX(五)1 .開閉原則的關(guān)鍵是抽象化。2 .在軟件開發(fā)中,如果要實現(xiàn)復(fù)用,應(yīng)盡量較多使用繼承,較少使用合成聚合的方式。3 .當(dāng)一個對象的行為取決于它所處的狀態(tài)時,這時我們應(yīng)該使用橋接模式。4 .適配器模式是一種創(chuàng)建型設(shè)計模式。5 .命令模式標(biāo)準(zhǔn)類圖中的Receiver不是必須存在的。答案:12345VXXXV四、簡答題(一)1 .假設(shè)系統(tǒng)中有三個類,分別為類A、類B和類C。在現(xiàn)有的設(shè)計中,讓類A直接依賴類B,如果要將類A

29、改為依賴類C,必須通過修改類A的代碼來達(dá)成,請問這樣的設(shè)計符合開閉原則嗎(2分)?如果符合,請依據(jù)開閉原則進(jìn)行解釋,如果不符合請給出重構(gòu)的方法(3分)。2 .假設(shè)某一軟件系統(tǒng)中存在類A,B,C,D,E請分別畫出使用這些類的中介者模式類圖及外觀模式類圖。3 .假如系統(tǒng)中存在一組具有相同結(jié)構(gòu)的產(chǎn)品類,如圖所示,如果要創(chuàng)建具體產(chǎn)品對象,應(yīng)該使用哪一種創(chuàng)建模式?(2分)根據(jù)給出的類圖,繪制出產(chǎn)品等級和產(chǎn)品族的圖示。(3分)根據(jù)產(chǎn)品族圖示,繪制工廠類的層次結(jié)構(gòu)圖(必須寫清類的方法)。(4分)答案:目前的設(shè)計不符合開閉原則(2分)重構(gòu)問題:新建接口I,使得類A依賴于接口I而類B和C實現(xiàn)接口I。(或相同概念

30、的表述)(3分)中介者模式類圖(4分)外觀模式類圖(4分)1)應(yīng)該使用抽象工廠模式(2分)2)產(chǎn)品等級和產(chǎn)品族的圖示(3分),產(chǎn)品族產(chǎn)品等級1r工廠類圖(4分,不對類名和方法名做限制,能夠正確表達(dá)含義即可)但左【AhruclFucti)r>一*IniLjktC/iip()一“廣面丹if)IntelFaciorymakeChipf)HnakeCPnt)AMbFuchtryinukcChipO-in;ik(X.FU()1 .簡述開閉原則、依賴倒轉(zhuǎn)原則的定義。2 .簡述策略模式的應(yīng)用場景(3分),并繪制策略模式的類圖(3分)。3 .假如要用軟件實現(xiàn)自動茶水銷售機的功能,茶水的價格取決于茶的品種

31、和杯子的大小。請回答以下問題,1)應(yīng)該使用哪一種模式?(2分)2)請繪制該模式的類圖。(4分)答案:1. 開閉原則:一個軟件實體,應(yīng)該對擴展開放,對修改關(guān)閉(3分)依賴倒轉(zhuǎn)原則:高層模塊不應(yīng)該依賴于低層模塊,它們都應(yīng)該依賴抽象。(3分)2. 1)策略模式的應(yīng)用場景:當(dāng)解決一個問題,有很多種方法或解決方案可以使用時,可以將每一種方法或解決方案封裝成一個類,可以相互替換(或相同意義表達(dá),3分).2)類圖(3分)3. 1)應(yīng)該使用橋接模式(2分)2)類圖(4分,不對類名和方法名做限制,能夠正確表達(dá)含義即可)1 .簡述依賴倒轉(zhuǎn)原則的定義。2 .假如系統(tǒng)中存在一組具有相同結(jié)構(gòu)的產(chǎn)品類,如圖所示,如果要創(chuàng)

32、建具體產(chǎn)品對象,1)應(yīng)該使用哪一種創(chuàng)建模式?(2分)2)根據(jù)給出的類圖,繪制出產(chǎn)品等級和產(chǎn)品族的圖示。(4分)3)根據(jù)產(chǎn)品族圖示,繪制工廠類的層次結(jié)構(gòu)圖(必須寫清類的方法)。(4分)答案:1.高層模塊不應(yīng)該依賴低層模塊,它們都應(yīng)該依賴抽象(3分)。抽象不應(yīng)該依賴于細(xì)節(jié),細(xì)節(jié)應(yīng)該依賴于抽象(3分)。2.1)2)3)應(yīng)該使用抽象工廠模式(2分)產(chǎn)品等級和產(chǎn)品族的圖示(4分)類圖(4分,不對類名和方法名做限制,能夠正確表達(dá)含義即可)«接口AbstructF»ctorvw-HinkeChipO-fJiakeCPlA1)Factorv五、程序設(shè)計題makcChip。makeCEUfi

33、+makeChip(>HnakeCPU什1 .現(xiàn)在需要開發(fā)一款游戲軟件,請以單例模式來設(shè)計其中的Boss角色。角色的屬性和動作可以任意設(shè)計。要求:該Boss類可以在多線程中使用。(8分)3.給定如圖所示的樹形結(jié)構(gòu),請應(yīng)用組合模式,繪制組合模式的類圖。(4分)編寫簡單元素和復(fù)雜元素的代碼。(4分)在客戶端完成數(shù)據(jù)的展示。具體要求如下:2 .一個農(nóng)場公司,專門負(fù)責(zé)培育各種水果,有葡萄,草莓和蘋果,請使用工廠方法,編寫(8分)工廠類和主程序,并在主程序中來完成草莓生長狀態(tài)的描述。1)在客戶端構(gòu)造出樹形數(shù)據(jù)并輸出。(4分)提示:程序運行后,輸出信息應(yīng)為RootLeafACompBLeafBXLe

34、afBYLeafC答案:1. PublicclassBossPrivatestaticBossinstance;/(2分)PrivateBoss()/(2分)PublicstaticBossgetInstance()/(2分)If(instance=null)Synchronized(Boss.Class)/(synchronized關(guān)鍵字,2分)If(instance=null)Instance=newBoss();returninstance;或者PublicclassBossPrivatestaticBossinstance=newBoss();/(4分)PrivateBoss()/(2

35、分)PublicstaticBossgetInstance()2分Returninstance;2.PublicinterfaceFactoryFruitbuild();PublicclassAppleFactoryimplementsFactoryPublicFruitbuild()ReturnnewApple();PublicclassGrapeFactoryimplementsFactoryPublicFruitbuild()ReturnnewGrape();PublicclassStrawberryFactoryimplementsFactoryPublicFruitbuild()Re

36、turnnewStrawberry();PublicclassMainUIPublicstaticvoidmain(stringstr)Factoryfac=newStrawberryFactory();Fruitft=fac.build();ft.plant();Ft.grow();Ft.harvest();3.1)類圖,類名不限,但必須將抽象的概念,以及Composite和Component之間的關(guān)系用正確的連線表示。(4分)2)簡單元素、復(fù)雜元素(4分):classLeafimplementsComponentStringname;publicLeaf(Stringname)this.n

37、ame=name;publicvoiddisplay()System.out.println(name);publicvoidadd(Componentc)publicvoidremove(Componentc)classCompositeimplementsComponentStringname;ArrayList<Component>list=newArrayList<Component>();publicComposite(Stringname)=name;)publicvoiddisplay()System.out.println(name);

38、for(inti=0;i<list.size();i+)list.get(i).display();)publicvoidadd(Componentc)list.add(c);publicvoidremove(Componentc)list.remove(c);客戶端(4分):publicclassTestpublicstaticvoidmain(String口args)Componentroot=newComposite("Root");root.add(newLeaf("LeafA");Componentcomp=newComposite(&q

39、uot;CompB");root.add(comp);comp.add(newLeaf("LeafBX");comp.add(newLeaf("LeafBY");root.add(newLeaf("LeafC");root.display();1 .現(xiàn)在需要開發(fā)一款打印機管理軟件,請以單例模式來設(shè)計其中的打印池PrintSpooler。要求:該PrintSpooler類可以在多線程中使用。(10分)2 .一個農(nóng)場公司,專門負(fù)責(zé)培育各種水果,有葡萄,草莓和蘋果,請使用簡單工廠模式,編寫簡單工廠類和主程序,并在主程序中來完成蘋果

40、生長狀態(tài)的描述。(10分)3 .給定如圖所示的樹形結(jié)構(gòu),請應(yīng)用組合模式,在客戶端完成數(shù)據(jù)的展示。具體要求如下:2 .繪制組合模式的類圖。(4分)3 .編寫簡單元素和復(fù)雜元素的代碼。(4分)File4答案:(4分)(2分)4.在客戶端構(gòu)造出樹形數(shù)據(jù)并輸出。提示:程序運行后,輸出信息應(yīng)為Dir1File1Dir2File3Dir31.PublicclassPrintSpoolerPrivatestaticPrintSpooler分)PrivatePrintSpooler()/(2分)PublicstaticPrintSpoolergetInstance()/If(instance=null)Syn

41、chronized(PrintSpooler.Class)/(synchronized關(guān)鍵字,2分)If(instance=null)Instance=newPrintSpooler();/2分returninstance;或者2.PublicclassPrintSpoolerPrivatestaticPrintSpoolerinstance=newPrintSpooler();/(粉)PrivatePrintSpooler()/(2分)PublicstaticPrintSpoolergetInstance()/(2分)returninstance;/(2分)2.PublicclassFrui

42、tFactory/6分,要有靜態(tài)方法,返回fruitPublicstaticFruitcreatFruit(Stringtype)Fruitft=null;If(type.equals("Apple")Ft=newApple();Elseif(type.equals("Strawberry")Ft=newStrawberry();Elseif(type.equals("Grape")Ft=newGrape();Returnft;)PublicclassMainUI/(4分)Publicstaticvoidmain(stringstr)

43、Fruitft=FruitFactory.creatFruit("Apple");ft.plant();Ft.grow();Ft.harvest();)3.1)類圖,類名不限,但必須將抽象的概念,以及Composite和Component之間的關(guān)系用正確的連線表示。5 .簡單元素、復(fù)雜元素(4分):classLeafimplementsComponentStringname;publicLeaf(Stringname)=name;)publicvoiddisplay()System.out.println(name);)publicvoidadd(Comp

44、onentc)publicvoidremove(Componentc)classCompositeimplementsComponentStringname;ArrayList<Component>list=newArrayList<Component>();publicComposite(Stringname)=name;publicvoiddisplay()System.out.println(name);for(inti=0;i<list.size();i+)list.get(i).display();publicvoidadd(Compo

45、nentc)list.add(c);publicvoidremove(Componentc)list.remove(c);6 .客戶端(4分):publicclassTestpublicstaticvoidmain(String口args)Componentroot=newComposite("Dir1");root.add(newLeaf("File1");Componentcomp=newComposite("Dir2");root.add(comp);comp.add(newLeaf("File3");Com

46、ponentcomp=newComposite("Dir3");root.add(comp);comp.add(newLeaf("File4");root.display();(三)1.一個農(nóng)場公司,專門負(fù)責(zé)培育各種水果,有葡萄,草莓和蘋果,請使用簡單工廠模式,編寫簡單工廠類和主程序,并在主程序中來完成蘋果生長狀態(tài)的描述。(8分)2.下圖是某系統(tǒng)的數(shù)據(jù)部分的類圖。因為該層次結(jié)構(gòu)中的操作需要經(jīng)常變化,所以需要用訪問者模式對其進(jìn)行重構(gòu),請按以下要求完成題目:(1)繪制重構(gòu)后系統(tǒng)完整類圖。(4分)(2)給出重構(gòu)后日ementA類的代碼。(4分)(3)在客戶端運

47、用訪問者模式,對ElementA的實例,完成CalPrice操作。(2分)ElementPrintDartaOCalPriceOEfementAElementsPnritData0.CalPHceO3.給定如圖所示的樹形結(jié)構(gòu),請應(yīng)用組合模式,在客戶端完成數(shù)據(jù)的展示。具體要求如下:繪制組合模式的類圖。(4分)2)編寫簡單元素的代碼。(2分)3)編寫復(fù)雜元素的代碼。(6分)4)編寫客戶端的代碼(4分)提示:程序運行后,輸出信息應(yīng)為Dir1FilelDir2File3Dir3File4答案:1.PublicclassFruitFactory/4分,要有靜態(tài)方法,返回fruitPublicstatic

48、FruitcreatFruit(Stringtype)Fruitft=null;If(type.equals("Apple")Ft=newApple();Elseif(type.equals("Strawberry")Ft=newStrawberry。;Elseif(type.equals("Grape")Ft=newGrape();Returnft;PublicclassMainUI(4分)Publicstaticvoidmain(stringstr)Apple");1)類圖,類名不限,但必須將抽象的概念,以及Compos

49、ite和Component之間的關(guān)系用正確的連線表示。Ft.grow();Ft.harvest();)2.1)類圖為(4分)ElementAPublicvoidaccept(Visitorv)V.accept(this))3)客戶端2分Visitorv=newCalPriceVistor();ElementAa=newElementA();A.accept(v);3.Fruitft=FruitFactory.creatFruit(ft.plant();2)classElementAextendsElement4ClientElemerU里:叩扁y史!制Client+Add(c:Componen

50、t)+ftr:iove(c:Convwnei.+OispfeY(depth:nt)z-composite+Addc:CMipONM)Cwonent)+&spla¥(tfep±:At)dnterface»VislnrTEImEmnlAE-menL-編山二-1ELHJitS舊-印tilPrintDatsVIstorFbEk色n咽止-uldJblMllffi廬i.iriyriLShCalPrlceVistorw%ifc巨巾愛口*(E國力士門以旬e/!£iiiiMLSjEmimn底b:+D;汩;0Koe口由:tnt;Elements*優(yōu)“陽則,2)簡單元

51、素(2分):classLeafimplementsComponentStringname;publicLeaf(Stringname)=name;publicvoiddisplay()System.out.println(name);3)復(fù)雜元素(6分)classCompositeimplementsComponentStringname;ArrayList<Component>list=newArrayList<Component>();publicComposite(Stringname)=name;publicvoiddispl

52、ay()System.out.println(name);for(inti=0;i<list.size();i+)list.get(i).display();publicvoidadd(Componentc)list.add(c);publicvoidremove(Componentc)list.remove(c);4)客戶端(4分):publicclassTestpublicstaticvoidmain(Stringargs)Componentroot=newComposite("Dir1");root.add(newLeaf("File1");

53、Componentcomp=newComposite("Dir2");root.add(comp);comp.add(newLeaf("File3");Componentcomp=newComposite("Dir3");root.add(comp);comp.add(newLeaf("File4");root.display();六、詳情知識點面向?qū)ο笤O(shè)計原則:1 .單一職責(zé)原則:不要存在多于一個導(dǎo)致類變更的原因。通俗的說,即一個類只負(fù)責(zé)一項職責(zé)。2 .開閉原則(重構(gòu))(抽象):一個軟件實體如類、模塊和函數(shù)應(yīng)該對擴展開放,對

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論