版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、體系結(jié)構(gòu)期末復習一、 選擇題(一)1. 設計模式的基本原理是( C )A. 面向?qū)崿F(xiàn)編程 B. 面向?qū)ο缶幊?C. 面向接口編程 D. 面向組合編程2. 設計模式的兩大主題是( D ) A. 系統(tǒng)的維護與開發(fā) B. 對象組合與類的繼承C. 系統(tǒng)架構(gòu)與系統(tǒng)開發(fā) D. 系統(tǒng)復用與系統(tǒng)擴展3. 依據(jù)設計模式思想,程序開發(fā)中應優(yōu)先使用的是( A )關系實現(xiàn)復用。 A. 組合聚合 B. 繼承 C. 創(chuàng)建 D. .以上都不對4. 關于繼承表述錯誤的是( D )A. 繼承是一種通過擴展一個已有對象的實現(xiàn),從而獲得新功能的復用方法。B. 泛化類(超類)可以顯式地捕獲那些公共的屬性和方法。特殊類(子類)則通過附
2、加屬性和方法來進行實現(xiàn)的擴展。C. 破壞了封裝性,因為這會將父類的實現(xiàn)細節(jié)暴露給子類。D. 繼承本質(zhì)上是“白盒復用”,對父類的修改,不會影響到子類。5. 常用的設計模式可分為( A ) A. 創(chuàng)建型、結(jié)構(gòu)型和行為型 B. 對象型、結(jié)構(gòu)型和行為型 C. 過程型、創(chuàng)建型和結(jié)構(gòu)型 D. 抽象型、接口型和實現(xiàn)型6. “不要和陌生人說話” 是對( D )設計原則的通俗表述。 A. 接口隔離 B. 里氏代換 C. 依賴倒轉(zhuǎn) D. .迪米特法則7. 在適配器模式中,對象適配器模式是對( A )設計原則的典型應用 A. 合成聚合 B. 里氏代換 C. 依賴倒轉(zhuǎn) D. .迪米特法則8. 將一個類的接口轉(zhuǎn)換成客戶
3、希望的另一個接口,這句話是對(C)設計模式的描述 A. 策略模式 B. 橋接模式 C. 適配器模式 D. 單例模式9. 以下設計模式中屬于結(jié)構(gòu)模式的是( D )A. 觀察者模式 B. 單例模式 C. 策略模式 D. 外觀模式10. 以下不屬于對象行為型模式是( D ) A. 命令模式 B. 策略模式 C. 訪問者模式 D. 橋接模式11. 下面的類圖表示的是哪個設計模式( D ) A. 抽象工廠模式 B. 觀察者模式 C. 策略模式 D. 橋接模式12. Open-Close開閉原則的含義是一個軟件實體( A )A. 應當對擴展開放,對修改關閉。 B. 應當對修改開放,對擴展關閉。C. 應當對
4、繼承開放,對修改關閉。 D. 以上都不對。13. 下面的類圖表示的是哪個設計模式( D ) A. 策略模式 B. 裝飾模式 C. 橋接模式 D. 觀察者模式14. 保證一個類僅有一個實例,并提供一個訪問它的全局訪問點。這句話是對( D )設計模式的描述。A. 外觀模式 B. 策略模式 C. 適配器模式 D. 單例模式15. 以下意圖哪個是用來描述組合模式?( C )A. 為其他對象提供一種代理以控制對這個對象的訪問。B. 運用共享技術有效地支持大量細粒度的對象。C. 將對象組合成樹形結(jié)構(gòu)以表示“部分-整體”的層次結(jié)構(gòu)。D. 將一個復雜對象的構(gòu)建與它的表示分離。16. 以下意圖哪個是用來描述命令
5、模式?( A )A. 將一個請求封裝為一個對象,從而使你可用不同的請求對客戶進行參數(shù)化。B. 定義一系列的算法,把它們一個個封裝起來, 并且使它們可相互替換。C. 為其他對象提供一種代理以控制對這個對象的訪問。D. 保證一個類僅有一個實例,并提供一個訪問它的全局訪問點。17. 以下哪種情況不適合使用適配器模式?( D )A. 你想使用一個已經(jīng)存在的類,而它的接口不符合你的需求。B. 你想創(chuàng)建一個類,該類可以復用另外一個類的功能。C. 你想創(chuàng)建一個類,該類可以復用另外多個類的功能。D. 你想在類中用相對較少的對象引用取代很多對象的引用。18. 以下意圖哪個是用來描述觀察者模式?( B )A. 將
6、抽象部分與它的實現(xiàn)部分分離,使它們都可以獨立地變化。B. 定義對象間的一種一對多的依賴關系,當一個對象的狀態(tài)發(fā)生改變時, 所有依賴于它的對象都得到通知并被自動更新。C. 用原型實例指定創(chuàng)建對象的種類,并且通過拷貝這些原型創(chuàng)建新的對象。D. 使多個對象都有機會處理請求,避免請求的發(fā)送者和接收者之間的耦合關系。19. 以下意圖哪個是用來描述狀態(tài)模式?( C )A. 使多個對象都有機會處理請求,避免請求的發(fā)送者和接收者之間的耦合關系。B. 順序訪問一個聚合對象中各個元素, 而又不需暴露該對象的內(nèi)部表示。C. 允許一個對象在其內(nèi)部狀態(tài)改變時改變它的行為。看起來似乎修改了它的類。D. 捕獲一個對象的內(nèi)部
7、狀態(tài),并在該對象之外保存這個狀態(tài)。20. 以下意圖哪個是用來描述策略模式?( D )A. 將抽象部分與它的實現(xiàn)部分分離,使它們都可以獨立地變化。B. 將一個復雜對象的構(gòu)建與它的表示分離。C. 將抽象部分與它的實現(xiàn)部分分離,使它們都可以獨立地變化。D. 定義一系列的算法,把它們一個個封裝起來, 并且使它們可相互替換。12345678910CDADADACDD11121314151617181920DADDCADBCD(二)1. 要依賴于抽象,不要依賴于具體。即針對接口編程,不要針對實現(xiàn)編程,是( D )A. 開閉原則 B. 接口隔離原則 C. 里氏代換原則 D. 依賴倒轉(zhuǎn)原則2. 以下對開-閉原
8、則的一些描述錯誤的是( A )A. 開-閉原則與對可變性的封裝原則沒有相似性。B. 找到一個系統(tǒng)的可變元素,將它封裝起來,叫開-閉原則。C. 對修改關閉: 是其原則之一。D. 從抽象層導出一個或多個新的具體類可以改變系統(tǒng)的行為,是其原則之一。3. 依據(jù)設計模式思想,程序開發(fā)中應優(yōu)先使用的是( B )關系實現(xiàn)復用。 A. 繼承 B. 組合聚合 C. 創(chuàng)建 D. .以上都不對4. 設計模式的兩大主題是( C ) A. 系統(tǒng)的維護與開發(fā) B. 對象組合與類的繼承C. 系統(tǒng)復用與系統(tǒng)擴展 D. 系統(tǒng)架構(gòu)與系統(tǒng)開發(fā)5. 常用的設計模式可分為( C ) A. 過程型、創(chuàng)建型和結(jié)構(gòu)型 B. 對象型、結(jié)構(gòu)型和
9、行為型 C. 創(chuàng)建型、結(jié)構(gòu)型和行為型 D. 抽象型、接口型和實現(xiàn)型6. “知道的越少越好” 是對( D )設計原則的通俗表述。 A. 接口隔離 B. 里氏代換 C. 依賴倒轉(zhuǎn) D. .迪米特法則7. 在適配器模式中,對象適配器模式是對( A )設計原則的典型應用 A. 合成聚合 B. 里氏代換 C. 依賴倒轉(zhuǎn) D. .迪米特法則8. 觀察者模式定義了一種( A )的依賴關系 A. 一對多 B. 多對多 C. 一對一 D. 以上都不對9. 以下設計模式中不屬于創(chuàng)建型模式的是( B ) A. 工廠模式 B. 外觀模式 C. 生成器模式 D. 單例模式10. 以下不屬于結(jié)構(gòu)型模式是( C ) A.
10、組合模式 B. 適配器模式 C. 訪問者模式 D. 橋接模式11. 以下不屬于行為型模式是( B ) A. 迭代器模式 B. 外觀模式 C. 狀態(tài)模式 D. 策略模式12. 將一個類的接口轉(zhuǎn)換成客戶希望的另一個接口,這句話是對(C)設計模式的描述 A. 策略模式 B. 橋接模式 C. 適配器模式 D. 單例模式13. 下面的類圖表示的是哪個設計模式( C ) A. 策略模式 B. 裝飾模式 C. 適配器模式 D. 觀察者模式14. 下面的類圖表示的是哪個設計模式( B ) A. 橋接模式 B. 組合模式 C. 命令模式 D. 觀察者模式15. 保證一個類僅有一個實例,并提供一個訪問它的全局訪問
11、點。這句話是對( D )設計模式的描述。 A. 外觀模式 B. 策略模式 C. 適配器模式 D. 單例模式16. 以下哪項不是橋接模式的優(yōu)點?( C )A. 分離接口及其實現(xiàn)部分。B. 提高可擴充性。 C. 改變值以指定新對象。D. 實現(xiàn)細節(jié)對客戶透明。17. 在觀察者模式中,表述錯誤的是?( C )A. 觀察者角色的更新是被動的。B. 被觀察者可以通知觀察者進行更新。C. 觀察者可以改變被觀察者的狀態(tài),再由被觀察者通知所有觀察者依據(jù)被觀察者的狀態(tài)進行。D. 以上表述全部錯誤。18. 當我們想創(chuàng)建一個具體的對象而又不希望指定具體的類時,可以使用( A )模式 A. 創(chuàng)建型 B. 結(jié)構(gòu)型 C.
12、行為型 D. .以上都不對19. 以下意圖哪個是用來描述狀態(tài)模式?( C )A. 使多個對象都有機會處理請求,避免請求的發(fā)送者和接收者之間的耦合關系。B. 順序訪問一個聚合對象中各個元素, 而又不需暴露該對象的內(nèi)部表示。C. 允許一個對象在其內(nèi)部狀態(tài)改變時改變它的行為??雌饋硭坪跣薷牧怂念悺. 捕獲一個對象的內(nèi)部狀態(tài),并在該對象之外保存這個狀態(tài)。20. 以下意圖哪個是用來描述組合模式?( C )A. 為其他對象提供一種代理以控制對這個對象的訪問。B. 運用共享技術有效地支持大量細粒度的對象。C. 將對象組合成樹形結(jié)構(gòu)以表示“部分-整體”的層次結(jié)構(gòu)。D. 將一個復雜對象的構(gòu)建與它的表示分離。
13、12345678910DABCCDAABC11121314151617181920BCCBDCCACC(三)1. 常用的設計模式可分為( A ) A. 創(chuàng)建型、結(jié)構(gòu)型和行為型 B. 對象型、結(jié)構(gòu)型和行為型 C. 過程型、創(chuàng)建型和結(jié)構(gòu)型 D. 抽象型、接口型和實現(xiàn)型2. “不要和陌生人說話” 是對( D )設計原則的通俗表述。 A. 接口隔離 B. 里氏代換 C. 依賴倒轉(zhuǎn) D. .迪米特法則3. 在適配器模式中,對象適配器模式是對( A )設計原則的典型應用 A. 合成聚合 B. 里氏代換 C. 依賴倒轉(zhuǎn) D. .迪米特法則4. 將一個類的接口轉(zhuǎn)換成客戶希望的另一個接口,這句話是對(C)設計模
14、式的描述 A. 策略模式 B. 橋接模式 C. 適配器模式 D. 單例模式5. 以下設計模式中屬于結(jié)構(gòu)模式的是( D ) A. 觀察者模式 B. 單例模式 C. 迭代器模式 D. 適配器模式6. 以下意圖哪個是用來描述命令模式?( A )A. 將一個請求封裝為一個對象,從而使你可用不同的請求對客戶進行參數(shù)化。B. 定義一系列的算法,把它們一個個封裝起來, 并且使它們可相互替換。C. 為其他對象提供一種代理以控制對這個對象的訪問。 D. 保證一個類僅有一個實例,并提供一個訪問它的全局訪問點。7. 下面的類圖表示的是哪個設計模式( D ) A. 抽象工廠模式 B. 橋接模式 C. 狀態(tài)模式 D.
15、適配器模式 圖18. Open-Close開閉原則的含義是一個軟件實體( A )A. 應當對擴展開放,對修改關閉。B. 應當對修改開放,對擴展關閉。C. 應當對繼承開放,對修改關閉。D. 以上都不對。9. 以下意圖哪個是用來描述組合模式?( C )A. 為其他對象提供一種代理以控制對這個對象的訪問。B. 運用共享技術有效地支持大量細粒度的對象。C. 將對象組合成樹形結(jié)構(gòu)以表示“部分-整體”的層次結(jié)構(gòu)。D. 將一個復雜對象的構(gòu)建與它的表示分離。10. 以下意圖哪個是用來描述狀態(tài)模式?( C )A. 使多個對象都有機會處理請求,避免請求的發(fā)送者和接收者之間的耦合關系。B. 順序訪問一個聚合對象中各
16、個元素, 而又不需暴露該對象的內(nèi)部表示。C. 允許一個對象在其內(nèi)部狀態(tài)改變時改變它的行為??雌饋硭坪跣薷牧怂念?。D. 捕獲一個對象的內(nèi)部狀態(tài),并在該對象之外保存這個狀態(tài)。12345678910ADACDADACC(四)1. 當我們想創(chuàng)建一個具體的對象而又不希望指定具體的類時,可以使用( A )模式 A. 創(chuàng)建型 B. 結(jié)構(gòu)型 C. 行為型 D. .以上都不對2. 以下對開-閉原則的一些描述錯誤的是( A )A. 開-閉原則與對可變性的封裝原則沒有相似性。B. 找到一個系統(tǒng)的可變元素,將它封裝起來,叫開-閉原則。C. 對修改關閉: 是其原則之一。D. 從抽象層導出一個或多個新的具體類可以改變系
17、統(tǒng)的行為,是其原則之一。3. 依據(jù)設計模式思想,程序開發(fā)中應優(yōu)先使用的是( B )關系實現(xiàn)復用。 A. 繼承 B. 組合聚合 C. 創(chuàng)建 D. .以上都不對4. “知道的越少越好” 是對( D )設計原則的通俗表述。 A. 接口隔離 B. 里氏代換 C. 依賴倒轉(zhuǎn) D. .迪米特法則5. 在適配器模式中,對象適配器模式是對( A )設計原則的典型應用 A. 合成聚合 B. 里氏代換 C. 依賴倒轉(zhuǎn) D. .迪米特法則6. 保證一個類僅有一個實例,并提供一個訪問它的全局訪問點。這句話是對( D )設計模式的描述。 A. 外觀模式 B. 策略模式 C. 適配器模式 D. 單例模式7. 以下意圖哪個
18、是用來描述策略模式?( D )A. 將抽象部分與它的實現(xiàn)部分分離,使它們都可以獨立地變化。B. 將一個復雜對象的構(gòu)建與它的表示分離。C. 將抽象部分與它的實現(xiàn)部分分離,使它們都可以獨立地變化。D. 定義一系列的算法,把它們一個個封裝起來, 并且使它們可相互替換。8. 以下不屬于結(jié)構(gòu)型模式是( C ) A. 組合模式 B. 適配器模式 C. 訪問者模式 D. 橋接模式9. 下面的類圖表示的是哪個設計模式( D ) A. 策略模式 B. 狀態(tài)模式 C. 適配器模式 D. 橋接模式10. 以下意圖哪個是用來描述狀態(tài)模式?( C ) A. 使多個對象都有機會處理請求,避免請求的發(fā)送者和接收者之間的耦合
19、關系。B. 順序訪問一個聚合對象中各個元素, 而又不需暴露該對象的內(nèi)部表示。C. 允許一個對象在其內(nèi)部狀態(tài)改變時改變它的行為??雌饋硭坪跣薷牧怂念?。D. 捕獲一個對象的內(nèi)部狀態(tài),并在該對象之外保存這個狀態(tài)。12345678910AABDADDCDC(五)1. 常用的設計模式可分為( A ) A. 創(chuàng)建型、結(jié)構(gòu)型和行為型 B. 對象型、結(jié)構(gòu)型和行為型 C. 過程型、創(chuàng)建型和結(jié)構(gòu)型 D. 抽象型、接口型和實現(xiàn)型2. “不要和陌生人說話” 是對( D )設計原則的通俗表述。 A. 接口隔離 B. 里氏代換 C. 依賴倒轉(zhuǎn) D. .迪米特法則3. 在適配器模式中,對象適配器模式是對( A )設計原則
20、的典型應用 A. 合成聚合 B. 里氏代換 C. 依賴倒轉(zhuǎn) D. .迪米特法則4. 將一個類的接口轉(zhuǎn)換成客戶希望的另一個接口,這句話是對(C)設計模式的描述 A. 策略模式 B. 橋接模式 C. 適配器模式 D. 單例模式5. 以下設計模式中屬于結(jié)構(gòu)模式的是( D ) A. 觀察者模式 B. 單例模式 C. 迭代器模式 D. 適配器模式6. 以下意圖哪個是用來描述命令模式?( A )A. 將一個請求封裝為一個對象,從而使你可用不同的請求對客戶進行參數(shù)化。B. 定義一系列的算法,把它們一個個封裝起來, 并且使它們可相互替換。C. 為其他對象提供一種代理以控制對這個對象的訪問。 D. 保證一個類僅
21、有一個實例,并提供一個訪問它的全局訪問點。7. 下面的類圖表示的是哪個設計模式( D ) A. 抽象工廠模式 B. 橋接模式 C. 狀態(tài)模式 D. 適配器模式 圖18. Open-Close開閉原則的含義是一個軟件實體( A )A. 應當對擴展開放,對修改關閉。B. 應當對修改開放,對擴展關閉。C. 應當對繼承開放,對修改關閉。D. 以上都不對。9. 以下意圖哪個是用來描述組合模式?( C )A. 為其他對象提供一種代理以控制對這個對象的訪問。B. 運用共享技術有效地支持大量細粒度的對象。C. 將對象組合成樹形結(jié)構(gòu)以表示“部分-整體”的層次結(jié)構(gòu)。D. 將一個復雜對象的構(gòu)建與它的表示分離。10.
22、 以下意圖哪個是用來描述狀態(tài)模式?( C )A. 使多個對象都有機會處理請求,避免請求的發(fā)送者和接收者之間的耦合關系。B. 順序訪問一個聚合對象中各個元素, 而又不需暴露該對象的內(nèi)部表示。C. 允許一個對象在其內(nèi)部狀態(tài)改變時改變它的行為。看起來似乎修改了它的類。D. 捕獲一個對象的內(nèi)部狀態(tài),并在該對象之外保存這個狀態(tài)。12345678910ADACDADACC二、 填空題(一)1. 面向?qū)ο蟮钠邨l設計原則包括:單一職責原則,_,_,_,合成聚合原則,接口隔離原則以及_。其中外觀模式是_原則的典型應用。2. 工廠模式中分為_,工廠方法,_三種模式。其中,可以應用平行等級結(jié)構(gòu)完成創(chuàng)建工作的模式是_
23、模式。3. 適配器模式,可以細分為_適配器和_適配器兩種實現(xiàn)。其中_適配器采用的是繼承復用,而_適配器采用的是合成聚合復用。4. Java API中,有兩個與觀察者模式相關的類和接口,分別是Observable和Observer,Observer的Update函數(shù)中用到的兩個參數(shù)的參數(shù)類型是_和_。5. 事件體系結(jié)構(gòu)中的三個基本角色包括事件源、_和_。其中在編程時一定要將_注冊添加到事件源中。6. 單例模式有兩種方式實現(xiàn),分別為_和_。它們共同的特征是構(gòu)造函數(shù)的訪問屬性必須是_。答案:1、開閉原則 里氏代換原則 依賴倒轉(zhuǎn)原則 迪米特法則 迪米特法則2、簡單工廠 抽象工廠 工廠方法3、類 對象
24、類 對象4、Observable Object5、事件 事件監(jiān)聽者 事件監(jiān)聽者6、餓漢式 懶漢式 私有(private)(二)1. 面向?qū)ο蟮钠邨l設計原則包括:_,開閉原則,_,依賴倒轉(zhuǎn)原則,_,接口隔離原則以及_。其中外觀模式是_原則的典型應用。2. 工廠模式中分為簡單工廠,_,_三種模式。其中,可以應用平行等級結(jié)構(gòu)完成創(chuàng)建工作的模式是_模式。3. 適配器模式,可以細分為_適配器和_適配器兩種實現(xiàn)。其中_適配器采用的是繼承復用,而_適配器采用的是合成聚合復用。4. Java API中,有兩個與觀察者模式相關的類和接口,分別是Observable和Observer,Observer的Updat
25、e函數(shù)中用到的兩個參數(shù)的參數(shù)類型是_和_。5. 事件體系結(jié)構(gòu)中的三個基本角色包括_、_和_。6. 單例模式有兩種方式實現(xiàn),分別為_和_。其中_能夠?qū)崿F(xiàn)類被加載時就同時生成類的實例。答案:1、單一職責原則 里氏代換原則 合成聚合原則 迪米特法則 迪米特法則2、工廠方法 抽象工廠 工廠方法3、類 對象 類 對象4、Observable Object5、事件源 事件 事件監(jiān)聽者6、餓漢式 懶漢式 餓漢式(三)1. 面向?qū)ο蟮钠邨l設計原則包括:單一職責原則,_,里氏代換原則,_,合成聚合原則,接口隔離原則以及_。2. 工廠模式中分為簡單工廠,_和_三種模式。3. Java API中,有兩個與觀察者模式
26、相關的類和接口,分別是_和_。4. 單例模式有兩種方式實現(xiàn),分別稱為_和_。它們共同的特征是構(gòu)造函數(shù)的訪問修飾符必須是_。答案:1、 開閉原則 、 依賴倒轉(zhuǎn)原則 、 迪米特法則2、 工廠方法 、 抽象工廠(方法) 3、Observable 、 Observer 4、懶漢式 、 餓漢式 、 private(私有的)(四)1. 面向?qū)ο蟮钠邨l設計原則包括:_,開閉原則,_,依賴倒轉(zhuǎn)原則,_,接口隔離原則以及_。2. 適配器模式,可以細分為_適配器和_適配器兩種實現(xiàn)。其中_適配器采用的是繼承復用。3. 能夠定義對象間的一種“一對多”的依賴關系,當一個對象的狀態(tài)改變,所有依賴于它的對象都能得到通知并自
27、動更新的設計模式的名稱是_。4. 單例模式中能夠?qū)崿F(xiàn)延時加載的方式,稱為_,實現(xiàn)即時加載的方式稱為_。答案:1. 單一職責原則 、 里氏代換原則 、 合成聚合原則、迪米特法則2. 類、對象、類 3.觀察者模式 4.懶漢式 、 餓漢式 (五)1. 面向?qū)ο蟮钠邨l設計原則包括:單一職責原則,_,里氏代換原則,_,合成聚合原則,接口隔離原則以及_。2. 工廠模式中分為簡單工廠,_和_三種模式。3. 適配器模式,可以細分為_適配器和_適配器兩種實現(xiàn)。4. 單例模式有兩種方式實現(xiàn),分別稱為_和_。它們共同的特征是構(gòu)造函數(shù)的訪問修飾符必須是_。答案:1. 開閉原則 、 依賴倒轉(zhuǎn)原則 、 迪米特法則2. 工
28、廠方法 、 抽象工廠(方法) 3、類、對象 4、懶漢式 、 餓漢式 、 private(私有的)三、 判斷題(一)1. 開閉原則的關鍵是抽象化。2. 在軟件開發(fā)中,如果要實現(xiàn)復用,應盡量較多使用繼承,較少使用合成聚合的方式。3. 當一個對象的行為取決于它所處的狀態(tài)時,這時我們應該使用橋接模式4. 適配器模式是一種創(chuàng)建型設計模式5. MVC結(jié)構(gòu)中模型和視圖之間交互的實現(xiàn)可以基于觀察者模式,其中模型是被觀察者。答案:1. 2. 3. 4. 5. (二)1. 設計模式的基本原理是面向?qū)崿F(xiàn)編程。2. 在軟件開發(fā)中,如果要實現(xiàn)復用,應盡量較多使用繼承,較少使用合成聚合的方式。3. 當一個對象的行為取決于
29、它所處的狀態(tài)時,這時我們應該使用狀態(tài)模式4. 適配器模式是一種創(chuàng)建型設計模式5. MVC結(jié)構(gòu)中模型和視圖之間交互的實現(xiàn)可以基于觀察者模式,其中模型是被觀察者。答案:1. 2. 3. 4. 5. (三)1. 開閉原則的關鍵是抽象化。2. 在軟件開發(fā)中,如果要實現(xiàn)復用,應盡量較多使用繼承,較少使用合成聚合的方式。3. 當一個對象的行為取決于它所處的狀態(tài)時,這時我們應該使用橋接模式。4. 適配器模式是一種創(chuàng)建型設計模式。5. 命令模式標準類圖中的Receiver不是必須存在的。答案:12345(四)1. 設計模式的基本原理是面向?qū)崿F(xiàn)編程。2. 在軟件開發(fā)中,如果要實現(xiàn)復用,應盡量較多使用繼承,較少使
30、用合成聚合的方式。3. 當一個軟件需要實現(xiàn)操作可撤銷的功能時,我們應該使用命令模式。4. 迭代器模式是一種結(jié)構(gòu)型設計模式。5. 抽象工廠方法完全符合開閉模式。答案:12345(五)1. 開閉原則的關鍵是抽象化。2. 在軟件開發(fā)中,如果要實現(xiàn)復用,應盡量較多使用繼承,較少使用合成聚合的方式。3. 當一個對象的行為取決于它所處的狀態(tài)時,這時我們應該使用橋接模式。4. 適配器模式是一種創(chuàng)建型設計模式。5. 命令模式標準類圖中的Receiver不是必須存在的。答案:12345四、 簡答題(一)1. 假設系統(tǒng)中有三個類,分別為類A、類B和類C。在現(xiàn)有的設計中,讓類A直接依賴類B,如果要將類A改為依賴類C
31、,必須通過修改類A的代碼來達成,請問這樣的設計符合開閉原則嗎(2分)?如果符合,請依據(jù)開閉原則進行解釋,如果不符合請給出重構(gòu)的方法(3分)。2. 假設某一軟件系統(tǒng)中存在類A,B,C,D,E。請分別畫出使用這些類的中介者模式類圖及外觀模式類圖。3. 假如系統(tǒng)中存在一組具有相同結(jié)構(gòu)的產(chǎn)品類,如圖所示,如果要創(chuàng)建具體產(chǎn)品對象,應該使用哪一種創(chuàng)建模式?(2分)根據(jù)給出的類圖,繪制出產(chǎn)品等級和產(chǎn)品族的圖示。(3分)根據(jù)產(chǎn)品族圖示,繪制工廠類的層次結(jié)構(gòu)圖(必須寫清類的方法)。(4分)答案:目前的設計不符合開閉原則(2分)重構(gòu)問題:新建接口I,使得類A依賴于接口I ,而類B和C實現(xiàn)接口I。(或相同概念的表述
32、)(3分)中介者模式類圖 (4分) 外觀模式類圖(4分)1)應該使用抽象工廠模式(2分)2)產(chǎn)品等級和產(chǎn)品族的圖示(3分) 工廠類圖(4分,不對類名和方法名做限制,能夠正確表達含義即可) (二)1. 簡述開閉原則、依賴倒轉(zhuǎn)原則的定義。2. 簡述策略模式的應用場景(3分),并繪制策略模式的類圖(3分)。3. 假如要用軟件實現(xiàn)自動茶水銷售機的功能,茶水的價格取決于茶的品種和杯子的大小。請回答以下問題,1) 應該使用哪一種模式?(2分)2) 請繪制該模式的類圖。(4分)答案:1. 開閉原則:一個軟件實體,應該對擴展開放,對修改關閉(3分)依賴倒轉(zhuǎn)原則:高層模塊不應該依賴于低層模塊,它們都應該依賴抽象
33、。(3分)2. 1)策略模式的應用場景:當解決一個問題,有很多種方法或解決方案可以使用時,可以將每一種方法或解決方案封裝成一個類,可以相互替換(或相同意義表達,3分).2)類圖(3分)3. 1)應該使用橋接模式(2分) 2) 類圖(4分,不對類名和方法名做限制,能夠正確表達含義即可) (三)1. 簡述依賴倒轉(zhuǎn)原則的定義。 2. 假如系統(tǒng)中存在一組具有相同結(jié)構(gòu)的產(chǎn)品類,如圖所示,如果要創(chuàng)建具體產(chǎn)品對象,1) 應該使用哪一種創(chuàng)建模式?(2分)2) 根據(jù)給出的類圖,繪制出產(chǎn)品等級和產(chǎn)品族的圖示。(4分)3) 根據(jù)產(chǎn)品族圖示,繪制工廠類的層次結(jié)構(gòu)圖(必須寫清類的方法)。(4分)答案:1. 高層模塊不應
34、該依賴低層模塊,它們都應該依賴抽象(3分)。抽象不應該依賴于細節(jié),細節(jié)應該依賴于抽象(3分)。2.1)應該使用抽象工廠模式(2分) 2)產(chǎn)品等級和產(chǎn)品族的圖示(4分) 3) 類圖(4分,不對類名和方法名做限制,能夠正確表達含義即可) 五、 程序設計題(一)1. 現(xiàn)在需要開發(fā)一款游戲軟件,請以單例模式來設計其中的Boss角色。角色的屬性和動作可以任意設計。 要求:該Boss類可以在多線程中使用。(8分) 2. 一個農(nóng)場公司,專門負責培育各種水果,有葡萄,草莓和蘋果,請使用工廠方法,編寫工廠類和主程序,并在主程序中來完成草莓生長狀態(tài)的描述。(8分) 3. 給定如圖所示的樹形結(jié)構(gòu),請應用組合模式,在
35、客戶端完成數(shù)據(jù)的展示。具體要求如下:繪制組合模式的類圖。(4分)編寫簡單元素和復雜元素的代碼。(4分)1) 在客戶端構(gòu)造出樹形數(shù)據(jù)并輸出。(4分)提示:程序運行后,輸出信息應為RootLeaf AComp BLeaf BXLeaf BYLeaf C答案:1. Public class BossPrivate static Boss instance; /(2分)Private Boss() /(2分)Public static Boss getInstance() /(2分)If(instance = null)Synchronized(Boss.Class) /(synchronized關鍵
36、字,2分)If(instance = null)Instance = new Boss();return instance;或者Public class BossPrivate static Boss instance = new Boss();/(4分)Private Boss()/(2分)Public static Boss getInstance()/2分Return instance;2. Public interface FactoryFruit build();Public class AppleFactory implements FactoryPublic Fruit buil
37、d()Return new Apple();Public class GrapeFactory implements FactoryPublic Fruit build()Return new Grape();Public class StrawberryFactory implements FactoryPublic Fruit build()Return new Strawberry();Public class MainUI Public static void main(string str)Factory fac = new StrawberryFactory();Fruit ft
38、= fac.build();ft.plant();Ft.grow();Ft.harvest();3. 1)類圖,類名不限,但必須將抽象的概念,以及Composite和Component之間的關系用正確的連線表示。(4分) 2) 簡單元素、復雜元素(4分):class Leaf implements ComponentString name;public Leaf(String name) = name; public void display()System.out.println( name);public void add(Component c)public void
39、remove(Component c) class Composite implements ComponentString name;ArrayList list = new ArrayList();public Composite(String name) = name; public void display()System.out.println(name);for(int i = 0 ; i list.size() ;i +)list.get(i).display(); public void add(Component c)list.add(c);public v
40、oid remove(Component c)list.remove(c);客戶端(4分):public class Test public static void main(String args)Component root = new Composite(Root);root.add(new Leaf(Leaf A);Component comp = new Composite(Comp B);root.add(comp);comp.add(new Leaf(Leaf BX);comp.add(new Leaf(Leaf BY);root.add(new Leaf(Leaf C);roo
41、t.display();(二)1. 現(xiàn)在需要開發(fā)一款打印機管理軟件,請以單例模式來設計其中的打印池PrintSpooler。要求:該PrintSpooler類可以在多線程中使用。(10分) 2. 一個農(nóng)場公司,專門負責培育各種水果,有葡萄,草莓和蘋果,請使用簡單工廠模式,編寫簡單工廠類和主程序,并在主程序中來完成蘋果生長狀態(tài)的描述。(10分) 3. 給定如圖所示的樹形結(jié)構(gòu),請應用組合模式,在客戶端完成數(shù)據(jù)的展示。具體要求如下:2. 繪制組合模式的類圖。(4分)3. 編寫簡單元素和復雜元素的代碼。(4分)4. 在客戶端構(gòu)造出樹形數(shù)據(jù)并輸出。(4分)提示:程序運行后,輸出信息應為Dir1File1
42、Dir2File3Dir3File4答案:1. Public class PrintSpoolerPrivate static PrintSpooler instance; /(2分)Private PrintSpooler() /(2分)Public static PrintSpooler getInstance() /(2分)If(instance = null)Synchronized(PrintSpooler.Class) /(synchronized關鍵字,2分)If(instance = null)Instance = new PrintSpooler();/2分return in
43、stance;或者2. Public class PrintSpoolerPrivate static PrintSpooler instance = new PrintSpooler(); /(4分)Private PrintSpooler() /(2分)Public static PrintSpooler getInstance() /(2分)return instance; /(2分) 2. Public class FruitFactory /6分,要有靜態(tài)方法,返回fruitPublic static Fruit creatFruit(String type)Fruit ft = n
44、ull ;If(type.equals(“Apple”)Ft = new Apple();Else if(type.equals(“Strawberry”)Ft = new Strawberry();Else if(type.equals(“Grape”)Ft = new Grape();Return ft;Public class MainUI /(4分)Public static void main(string str)Fruit ft = FruitFactory.creatFruit(“Apple”);ft.plant();Ft.grow();Ft.harvest();3. 1)類圖
45、,類名不限,但必須將抽象的概念,以及Composite和Component之間的關系用正確的連線表示。 5. 簡單元素、復雜元素(4分):class Leaf implements ComponentString name;public Leaf(String name) = name; public void display()System.out.println(name);public void add(Component c)public void remove(Component c)class Composite implements ComponentStrin
46、g name;ArrayList list = new ArrayList();public Composite(String name) = name; public void display()System.out.println(name);for(int i = 0 ; i list.size() ;i +)list.get(i).display(); public void add(Component c)list.add(c);public void remove(Component c)list.remove(c);6. 客戶端(4分):public class Test public static void main(String args)Component root = new Composite(Dir1);root.add(new Leaf(File1);Component comp = new Composite(Dir2);root.add(comp);comp.add(new Leaf(File3);Component comp = new Composite(Dir3);root.add(comp);
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中職新能源汽車檢測與維修技術(動力電池管理系統(tǒng))試題及答案
- 高三生物(仿真模擬)2026年下學期期中測試卷
- 2025年中職工商管理(企業(yè)管理基礎)試題及答案
- 2025年高職第一學年(口腔醫(yī)學技術)口腔正畸工藝階段測試試題及答案
- 2025年大學第三學年(農(nóng)業(yè)企業(yè)管理)農(nóng)業(yè)龍頭企業(yè)運營測試題及答案
- 2025年大學美容美發(fā)(美容美發(fā)研究)試題及答案
- 2025年大學(文學)文學專業(yè)階段測試題及答案
- 2025年大學藝術學(美術欣賞)試題及答案
- 2025年大學??疲ㄒ苿討瞄_發(fā))APP制作綜合測試題及答案
- 2025年高職志愿服務管理(志愿管理應用)試題及答案
- 眼耳鼻喉科2019年院感工作計劃
- 大型鋼鐵企業(yè)關鍵備件聯(lián)儲聯(lián)備供應鏈戰(zhàn)略共享探討
- 國企正式工合同范本
- 淺析煤礦巷道快速掘進技術
- 反腐敗反賄賂培訓
- 成人留置導尿標準化護理與并發(fā)癥防控指南
- DB34∕T 4700-2024 智慧中藥房建設與驗收規(guī)范
- 穿越機基礎課件
- 谷歌員工關系管理案例
- 班級互動小游戲-課件共30張課件-小學生主題班會版
- 物流企業(yè)倉儲安全操作規(guī)程與培訓教材
評論
0/150
提交評論