東 北 大 學(xué) 繼 續(xù) 教 育 學(xué) 院
軟件設(shè)計模式 X 試 卷(作業(yè)考核 線上2) A 卷(共 7 頁)
總分 題號 一 二 三 四 五 六 七 八 九 十
得分 一、單選題(共40分,每題2分)
1. 常用的基本設(shè)計模式可分為()
A.創(chuàng)建型、結(jié)構(gòu)型和行為型 B. 對象型、結(jié)構(gòu)型和行為型
C.過程型、結(jié)構(gòu)型和行為型 D. 抽象型、接口型和實現(xiàn)型
2. 對以下開閉原則的描述錯誤的是()
A.開閉原則與“對可變性的封裝原則”沒有相似性
B.找到個系統(tǒng)的可變元素,將它封裝起來,叫開閉原則
C.對修改關(guān)閉,是其原則之一
D.從抽象層導(dǎo)出一個或多個新具體類可以改變系統(tǒng)的行為,是其原則之一
3. “不要和陌生人說話”是()原則的通俗表述。
A. 接口隔離 B. 里氏替換 C. 依賴倒置 D. 迪米特
4. 當(dāng)創(chuàng)建一個具體的對象而又不希望指定具體的類時,可以使用()
A. 結(jié)構(gòu)型 B. 創(chuàng)建型 C. 行為型 D.以上都可以
5. 以下( )是利用一個對象,快速地生成一批對象。
A. 抽象工廠(Abstract Factory)模式 B. 原型(Prototype)模式
C. 合成(Composite)模式 D. 橋接(Bridge)模式
6. 以下( )用來描述建造者( Builder )。
A. 定義一個用于創(chuàng)建對象的接口,讓子類決定實例化哪一個類
B. 將一個復(fù)雜對象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示
C. 保證一個類僅有一個實例,并提供→個訪問它的全周訪問點
D. 運用共享技術(shù)有效地支持大量細(xì)粒度的對象
7. 以下( )用來描述工廠方法(Factory Method)模式。
A. 提供一個創(chuàng)建一系列相關(guān)或相互依賴對象的接口,而無須指定它們具體的類
B. 表示一個作用于某對象結(jié)構(gòu)中的各元素的操作。它使用戶可以在不改變各元素的類的前提下定義作用于這些元素的新操作
C. 定義一個用于創(chuàng)建對象的接口,讓子類決定實例化哪一個類。該模式使一個類的實例化延遲到其子類
D. 定義一系列的算法,把它們一個個封裝起來,并且使它們可相互替換。本模式使得算法可獨立于使用它的客戶而變化
8. 對象適配器模式是( )原則的典型應(yīng)用。
A. 將一個類的接口轉(zhuǎn)換成客戶希望的另外一個接口,本模式使原本由于接口不兼容而不能一起工作的那些類可以一起工作。
B. 定義一個用于創(chuàng)建對象的接口,讓子類決定實例化哪一個類
C. 表示一個作用于某對象結(jié)構(gòu)中的各元素的操作,它使用戶可以在不改變各元素的類的前提下定義作用于這些元素的新操作
D. 將一個請求封裝為一個對象,從而使用戶可用不同的請求對客戶進行參數(shù)化; 對請求排隊或記錄請求日志,以及支持可撤銷的操作
9. 關(guān)于模式適用性,以下( )不適合使用Flyweight(享元)模式。
A. 一個應(yīng)用程序使用了大量的對象
B. 完全由于使用大量的對象, 造成很大的存儲開銷
C. 對象的大多數(shù)狀態(tài)都可變?yōu)橥獠繝顟B(tài)
D. 用戶想使用一個已經(jīng)存在的類,而它的接口不符合用戶的需求
10. 如果有一個2MB 的文本(英文字母),為了對其中的字母進行分類和計數(shù),若為文本中的每個字母都定義一個對象顯然不合實際,對與該問題最好可使用的模式是( )。
A. 裝飾(Decorator)模式 B. 享元( Flyweight )模式
C. 合成(Composite)模式 D.命令(Command)模式
11. 關(guān)于模式適用性, 以下( )適合使用組合(Composite) 模式。
A. 用戶想使用一個已經(jīng)存在的類, 而它的接口不符合用戶的需求
B. 當(dāng)一個類的實例只能有幾個不同狀態(tài)組合中的一種時
C. 用戶想表示對象的部分-整體層次結(jié)構(gòu)
D. 一個對象的行為取決于它的狀態(tài), 并且它必須在運行時根據(jù)狀態(tài)改變它的行為
12. 以下意圖( )可用來描述命令(Command)。
A. 將一個請求封裝為一個對象,從而使用戶可用不同的請求對客戶進行參數(shù)化; 對請求排隊或記錄請求日志,以及支持可撤銷的操作
B.定義一系列的算法,把它們一個個封裝起來, 并且使它們可相互替換, 本模式使得算法可獨立于使用它的客戶而變化
C. 為其他對象提供一種代理以控制對這個對象的訪問
D. 保證一個類僅有一個實例,并提供一個訪問它的全局訪問點
13. 以下不屬于行為型模式的是( )。
A.命令(Command ) B.策略(Strategy) C. 備忘錄(Memento ) D.橋接(Bridge )
14. 關(guān)于模式適用性, 以下( )不適合使用模板方法(Template Method) 模式。
A. 一次性實現(xiàn)-個算法的不變的部分,并將可變的行為留給子類來實現(xiàn)
B. 當(dāng)對一個對象的改變需要同時改變其他對象,而不知道具體有多少對象有待改變
C. 各子類中公共的行為應(yīng)被提取出來并集中到一個公共父類中以避免代碼重復(fù)。首先識別現(xiàn)有代碼中的不同之處,并且將不同之處分離為新的操作。最后,用一個調(diào)用這些新的操作的模板方法來替換這些不同的代碼
D.控制子類擴展。模板方法只在特定點調(diào)用“hook”操作,這樣就只允許在這些點進行擴展
15. 關(guān)于模式適用性,( )不適合使用職責(zé)鏈(Chain of Responsibility)模式。
A. 有多個的對象可以處理一個請求,哪個對象處理該請求運行時刻自動確定
B. 在需要用比較通用和復(fù)雜的對象指針代替簡單的指針的時候
C. 用戶想在不明確指定接收者的情況下,向多個對象中的一個提交一個請求
D. 可處理一個請求的對象集合應(yīng)被動態(tài)指定
16. 以下意圖( )可用來描述中介者(Mediator) 。
A. 提供一種方法順序訪問一個聚合對象中各個元素,而又不需暴露該對象的內(nèi)部表示
B. 將抽象部分與它的實現(xiàn)部分分離, 使它們都可以獨立變化
C. 定義一個用于創(chuàng)建對象的接口,讓子類決定實例化哪一個類
D. 用-個中介對象來封裝一系列的對象交互
17. 以下意圖( )可用來描述解釋器(Interpreter)。
A. 將抽象部分與它的實現(xiàn)部分分離,使它們都可以獨立變化
B. 給定一個語言, 定義它的文法的一種表示,并定義一個解釋器,這個解釋器使用該表示來解釋語言中的句子
C. 將一個復(fù)雜對象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示
D. 為其他對象提供一種代理以控制對這個對象的訪問
18. 以下意圖( )可用來描述訪問者(Visitor )。
A. 定義對象間的一種一對多的依賴關(guān)系,當(dāng)一個對象的狀態(tài)發(fā)生改變時,所有依賴于它的對都得到通知并被自動更新
B. 表示一個作用于某對象結(jié)構(gòu)中的各元素的操作
C. 在不破壞封裝性的前提下,捕獲一個對象的內(nèi)部狀態(tài),并在該對象之外保存這個狀態(tài),這樣以后就可將該對象恢復(fù)到原先保存的狀態(tài)
D. 用原型實例指定創(chuàng)建對象的種類,并且通過復(fù)制這些原型創(chuàng)建新的對象
19. 以下意圖( )可用來描述狀態(tài)( State )。
A. 使多個對象都有機會處理請求,從而避免請求的發(fā)送者和接收者之間的精合關(guān)系
B. 提供一種方法順序訪問一個聚合對象中各個元素而又不需暴露該對象的內(nèi)部表示
C. 允許一個對象在其內(nèi)部狀態(tài)改變時改變它的行為。對象看起來似乎修改了它的類
D. 在不破壞封裝性的前提下,捕獲一個對象的內(nèi)部狀態(tài),并在該對象之外保存這個狀態(tài),這樣以后就可將該對象恢復(fù)到原先保存的狀態(tài)
20. 設(shè)計模式具有的優(yōu)點()。
A. 適應(yīng)需求變化 B. 程序易于理解
C.減少開發(fā)過程中的代碼開發(fā)工作量 D. 簡化軟件系統(tǒng)的設(shè)計
二、多選題(共10分,每題2分)
1. 以下是模式的基本要素的是( )。
A. 名稱 B. 意圖 C. 解決方案 D. 參與者和協(xié)作者
2. 以下屬于創(chuàng)建型模式的是( )。
A.抽象工廠(Ab stract Factory)模式 B.合成(Composite) 模式
C. 單例(Singleton)模式 D. 橋接(Bridge)模式
3. 以下關(guān)于結(jié)構(gòu)型模式說法正確的是( )。
A. 結(jié)構(gòu)型模式可以在不破壞類封裝性的基礎(chǔ)上, 實現(xiàn)新的功能
B. 結(jié)構(gòu)型模式主要用于創(chuàng)建一組對象
C. 結(jié)構(gòu)型模式可以創(chuàng)建一組類的統(tǒng)→訪問接口
D. 結(jié)構(gòu)型模式可以在不破壞類封裝性的基礎(chǔ)上, 使類可以同不曾估計到的系統(tǒng)進行交互
4. 以下屬于行為對象模式的是( )。
A. 裝飾(Decorator)模式 B. 迭代器(Iterator)模式
C. 命令(Command)模式 D. 中介者(Mediator)模式
5. 下面( )是訪問者模式的優(yōu)缺點。
A. 訪問者模式使得易于增加新的操作 B. 訪問者集中相關(guān)的操作而分離無關(guān)的操作
C. 增加新的ConcreteElment 類很困難 D. 通過類層次進行訪問
三、判斷題(共10分,每題1分;請在認(rèn)為正確的題目后面寫T,錯誤的題目后面寫F)
1. 設(shè)計模式的兩大主題是系統(tǒng)復(fù)用與系統(tǒng)擴展。( )
2. 抽象工廠模式提供了一系列相關(guān)或相互依賴對象的接口且必須指定他們具體的類。( )
3. 對象適配器模式是依賴倒轉(zhuǎn)原則的典型應(yīng)用。( )
4. Open-Close原則的含義是一個軟件實體應(yīng)當(dāng)對擴展開放,對修改關(guān)閉。( )
5. Singleton(單例)模式屬于結(jié)構(gòu)性模式。( )
6. 常用的設(shè)計模式可分為過程型、創(chuàng)建型和結(jié)構(gòu)型。( )
7. 對觀察者模式,觸發(fā)事件的對象——Subject對象不需要知道觀察事件的所有對象。( )
8. 通過在問題領(lǐng)域中使用模式,可以用一種不同的方式來看待問題。( )
9. 對象適配器模式是依賴倒轉(zhuǎn)原則的典型應(yīng)用。( )
10. Template Method是用以幫助從不同的步驟中抽象出一個通用的過程的模式。( )
四、名詞解釋(共15分,每題3分)
1. 設(shè)計模式
2. 開閉原則
3.單一職責(zé)原則
4.依賴關(guān)系
5.組合關(guān)系
五、簡答題(共15分,每題5分)
1. 設(shè)計模式一般有哪幾個基本要素?
2. 創(chuàng)建型模式分包括哪幾種設(shè)計模式,各是什么并簡要說明。
3. 說明訪問者模式的定義與主要優(yōu)缺點。
六、綜合題(共10分)
當(dāng)“人民幣匯率” 升值時, 進口公司的進口產(chǎn)品成本降低且利潤率提升,出口公司的出口產(chǎn)品收入降低且利潤率降低; 當(dāng)“人民幣匯率” 貶值時,進口公司的進口產(chǎn)品成本提升且利潤率降低, 出口公司的出口產(chǎn)品收入提升且利潤率提升。利用觀察者模式設(shè)計一個程序, 分析“人民幣匯率”的升值或貶值對進口公司的進口產(chǎn)品成本或出口公司的出口產(chǎn)品收入以及公司的利潤率的影響。
提示:這里的匯率(Rate) 類是抽象目標(biāo)類,它包含了保存觀察者(Company ) 的List 和增加/刪除觀察者的方法, 以及有關(guān)匯率改變的抽象方法change(int number); 而人民幣匯率(RMBrate)類是具體目標(biāo),它實現(xiàn)了父類的change(int number)方法,即當(dāng)人民幣匯率發(fā)生改變時通過相關(guān)公司; 公司(Company)類是抽象觀察者, 它定義了一個有關(guān)匯率反應(yīng)的抽象方法respons巳(int number); 進口公司( ImportCompany )類和出口公司( E xportCompany )類是具體觀察者類,它們實現(xiàn)了父類的response(int
number)方法, 即當(dāng)它們接收到匯率發(fā)生改變的通知時作為相應(yīng)的反應(yīng)。
請畫出該程序的類圖。
奧鵬,國開,廣開,電大在線,各省平臺,新疆一體化等平臺學(xué)習(xí)
詳情請咨詢QQ : 3230981406或微信:aopopenfd777