設(shè)計模式與軟件體系結(jié)構(gòu)智慧樹知到答案章節(jié)測試2023年天津農(nóng)學(xué)院_第1頁
設(shè)計模式與軟件體系結(jié)構(gòu)智慧樹知到答案章節(jié)測試2023年天津農(nóng)學(xué)院_第2頁
設(shè)計模式與軟件體系結(jié)構(gòu)智慧樹知到答案章節(jié)測試2023年天津農(nóng)學(xué)院_第3頁
設(shè)計模式與軟件體系結(jié)構(gòu)智慧樹知到答案章節(jié)測試2023年天津農(nóng)學(xué)院_第4頁
設(shè)計模式與軟件體系結(jié)構(gòu)智慧樹知到答案章節(jié)測試2023年天津農(nóng)學(xué)院_第5頁
已閱讀5頁,還剩15頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第一章測試以下對開閉原則的描述錯誤的是()。

A:對修改關(guān)閉,是其原則之一

B:找到一個系統(tǒng)的可變元素,將它封裝起來,叫開閉原則

C:開閉原則與“對可變形的封裝原則”沒有相似性

D:從抽象層導(dǎo)出一個或多個新的具體類可以改變系統(tǒng)的行為,是其原則之一

答案:C常用的基本設(shè)計模式可分為()。

A:過程型、結(jié)構(gòu)型和行為型

B:創(chuàng)建型、結(jié)構(gòu)型和行為型

C:抽象型、接口型和實現(xiàn)型

D:對象型、結(jié)構(gòu)型和行為型

答案:B對違反里氏替換原則的兩個類,可以采用的候選解決方案正確的是()。

A:盡量將一些需要擴展的類或者存在變化的類設(shè)計為抽象類或者接口,并將其作為基類,在程序中盡量使用基類對象進行編程。

B:將B到A的繼承關(guān)系改成組合關(guān)系。

C:創(chuàng)建一個新的抽象類C,作為兩個具體類的超類,將A和B共同的行為移動到C中,從而解決A和B行為不完全一致的問題。

D:區(qū)分是“is-a”還是“has-a”。如果是“is-a”,可以使用繼承關(guān)系,如果是“has-a”應(yīng)該改成組合關(guān)系。

答案:A下列屬于面向?qū)ο蠡驹瓌t的是()。

A:子類復(fù)用

B:封裝

C:里氏替換

D:繼承

答案:C軟件設(shè)計模式的最關(guān)鍵的元素包括()。

A:問題

B:參與者和協(xié)作者

C:名稱

D:解決方案

答案:ABCD常用的描述設(shè)計模式的格式有()。

A:適用性

B:動機

C:結(jié)構(gòu)

D:意圖

答案:ABCD“不要和陌生人說話”是迪米特原則的通俗表述。

A:對

B:錯

答案:A依據(jù)設(shè)計模式思想,程序開發(fā)中應(yīng)優(yōu)先使用的是創(chuàng)建。

A:對

B:錯

答案:B設(shè)計模式一般用來解決同一問題的不同表相。

A:錯

B:對

答案:B學(xué)習(xí)設(shè)計模式可以縮短軟件的開發(fā)周期。

A:錯

B:對

答案:B第二章測試以下關(guān)于創(chuàng)建型模式說法正確的是()。

A:創(chuàng)建型模式關(guān)注的是對象的創(chuàng)建

B:創(chuàng)建型模式關(guān)注的是對象間的協(xié)作

C:創(chuàng)建型模式關(guān)注的是組織類和對象的常用方法

D:創(chuàng)建型模式關(guān)注的是功能的實現(xiàn)

答案:A當創(chuàng)建一個具體的對象而不希望制定具體的類時,可以使用()模式。

A:結(jié)構(gòu)型

B:復(fù)用型

C:行為型

D:創(chuàng)建型

答案:D當需要在項目中定制自己的元素時,可使用()模式來定制。

A:行為型

B:創(chuàng)建型

C:結(jié)構(gòu)型

D:復(fù)用型

答案:B當應(yīng)用工廠方法(FactoryMethod)模式時要考慮()。

A:特定語言的變化和問題

B:使用模板以避免創(chuàng)建子類

C:參數(shù)化工廠方法

D:主要有兩種不同的情況

答案:ABCD工廠模式分為()3種類型。

A:簡單工廠

B:單例

C:抽象工廠

D:工廠方法

答案:ACD簡單工廠模式可以根據(jù)參數(shù)的不同返回不同的實例。

A:錯

B:對

答案:B工廠方法模式的主要角色有:抽象工廠(AbstractFactory)、具體工廠(ConcreteFactory)、抽象產(chǎn)品(Product)和具體產(chǎn)品(ConcreteProduct)。

A:對

B:錯

答案:A抽象工廠模式是簡單工廠模式的升級版本,工廠方法模式只生產(chǎn)一個等級的產(chǎn)品,而抽象工廠模式可生產(chǎn)多個等級的產(chǎn)品。

A:對

B:錯

答案:B創(chuàng)建型模式把實例化的責(zé)任與使用實例的責(zé)任分割開來。

A:對

B:錯

答案:A由于AbstractFactory類和具體工廠方法可以分離,因此在實現(xiàn)時會產(chǎn)生更多的類。

A:錯

B:對

答案:A第三章測試()可用來描述原型(Prototype)。

A:允許一個對象在其內(nèi)部狀態(tài)改變時改變它的行為。對象看起來似乎修改了它的類。

B:用原型實例指定創(chuàng)建對象的種類,并且通過復(fù)制這些原型創(chuàng)建新的對象。

C:定義對象間的一種一對多的依賴關(guān)系,當一個對象的狀態(tài)發(fā)生改變時,所有依賴于它的對象都得到通知并被自動更新。

D:表示一個作用于某對象結(jié)構(gòu)中的各元素的操作。它是你可以在不改變各元素的類的前提下定義作用于這些元素的新操作。

答案:B在()適合使用單例(Singleton)模式。

A:當一個類的實例只能有幾個不同的狀態(tài)組合中的一種時

B:當一個類不知道它所必須創(chuàng)建的對象的類的時候

C:當一個類希望由它的子類來指定它所創(chuàng)建的對象的時候

D:當這個唯一實例應(yīng)該是通過子類化可擴展的,并且客戶應(yīng)該無需更改代碼就能使用一個擴展的實例時

答案:D在()不適合使用原型(Prototype)模式。

A:為了避免創(chuàng)建一個與產(chǎn)品類層次平行的工廠類層次時

B:當要強調(diào)一系列相關(guān)的產(chǎn)品對象的設(shè)計以便進行聯(lián)合使用時

C:當要實例化的類是在運行時刻指定是,例如通過動態(tài)裝載

D:當一個類的實例只能有幾個不同狀態(tài)組合中的一種時

答案:B單例模式中,兩個基本要點()和單子類自己提供單利。

A:構(gòu)造函數(shù)私有

B:動態(tài)工廠方法

C:唯一實例

D:靜態(tài)工廠方法

答案:AC使用原型(Prototype)模式時要考慮的問題有()。

A:初始化克隆對象

B:實現(xiàn)克隆操作

C:使用一個原型管理器

D:用類動態(tài)配置應(yīng)用

答案:ABC建造者模式包括:()等主要角色。

A:產(chǎn)品角色(Product)

B:具體建造者(ConcreteBuilder)

C:指揮者(Director)

D:抽象建造者(Builder)

答案:ABCD單例模式分為懶漢式單例和餓漢式單例兩種。

A:對

B:錯

答案:A原型(Prototype)模式包含:抽象原型類、具體原型類和訪問者類等3個部分。

A:對

B:錯

答案:A建造者的退化模式是通過省略使用者角色完成退化的。

A:對

B:錯

答案:B懶漢式單例類在第一次被引用時將自己實例化。

A:對

B:錯

答案:A第四章測試用來描述適配器(Adapter)的意圖是()。

A:將一個請求封裝為一個對象,從而使用戶可用不同的請求對客戶進行參數(shù)化;對請求排隊或記錄請求日志,以及支持可撤銷的操作

B:將一個類的接口轉(zhuǎn)換成客戶希望的另外一個接口,本模式使原本由于接口不兼容而不能一起工作的那些類可以一起工作

C:定義一個用于創(chuàng)建對象的接口,讓子類決定實例化哪一個類

D:表示一個作用于某對象結(jié)構(gòu)中的各元素的操作,它使用戶可以在不改變各元素的類的前提下定義作用于這些元素的新操作

答案:B關(guān)于模式適用性,不適合使用適配器(Adapter)模式的是(

)。

A:用戶想使用一些已經(jīng)存在的子類,但是不可能對每一個都進行子類化以匹配它們的接口。對象適配器可以適配它的父類接口

B:如果刪除對象的外部狀態(tài),那么可以用相對較少的共享對象取代很多組對象

C:用戶想使用一個已經(jīng)存在的類,而它的接口不符合用戶的需求

D:用戶想創(chuàng)建一個可以復(fù)用的類,該類可以與其他不相關(guān)的類或不可預(yù)見的類(即那些接口可能不一定兼容的類)協(xié)同工作

答案:B對象的結(jié)構(gòu)模式包括()。

A:享元模式

B:代理人模式

C:裝飾模式

D:合成模式

答案:ABCD適配器模式分為()2種。

A:代理模式

B:類結(jié)構(gòu)型模式

C:組合模式

D:對象結(jié)構(gòu)型模式

答案:BD類適配器模式和對象適配器模式可用Java實現(xiàn)。

A:錯

B:對

答案:B類結(jié)構(gòu)型模式之間的耦合度比后者高,且要求程序員了解現(xiàn)有組件庫中的相關(guān)組件的內(nèi)部結(jié)構(gòu),所以應(yīng)用相對較少些。

A:對

B:錯

答案:A適配器模式不可以模擬新能源汽車的發(fā)動機。

A:對

B:錯

答案:B一個類的結(jié)構(gòu)模式的典型例子就是類的適配器模式。

A:對

B:錯

答案:A對象的結(jié)構(gòu)模式描述怎樣把各種不同類型的對象組合在一起,以實現(xiàn)新的功能,其是動態(tài)的。

A:對

B:錯

答案:A作為適配器模式的一個特例,缺省適配器模式在Java語言中有著特殊的應(yīng)用。

A:對

B:錯

答案:A第五章測試以下哪一項可用來描述裝飾(Decorator)()。

A:運用共享技術(shù)有效地支持大量細粒度的對象

B:將抽象部分與它的實現(xiàn)部分分離,使它們都可以獨立變化

C:用原型實例指定創(chuàng)建對象的種類,并且通過復(fù)制這些原型創(chuàng)建新的對象

D:動態(tài)地給一個對象添加一些額外的職責(zé)

答案:D裝飾(Decorator)模式不能用于下列那個選項()。

A:客戶程序與抽象類的實現(xiàn)部分之間存在著很大的依賴性

B:當不能采用生成子類的方法進行擴充時。一種情況是,可能有大量獨立的擴展,每種組合將產(chǎn)生大量的子類,使得子類數(shù)目呈爆炸性增長。另一種情況可能是類的定義被隱藏,或類定義不能用于生成子類

C:處理那些可以撒銷的職責(zé)

D:在不影響其他對象的情況下,以動態(tài)、透明的方式給單個對象添加職責(zé)

答案:A關(guān)于模式適用性,以下(

)不適合使用Composite(組合)模式。

A:用戶想使用一個已經(jīng)存在的類,而它的接口不符合用戶的需求

B:用戶想表示對象的部分-整體層次結(jié)構(gòu)

C:當一個類的實例只能有幾個不同狀態(tài)組合中的一種時

D:一個對象的行為取決于它的狀態(tài),并且它必須在運行時刻根據(jù)狀態(tài)改變它的行為

答案:B以下意圖()是用來描述組合(Composite)。

A:將一個復(fù)雜對象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示

B:將對象組合成樹形結(jié)構(gòu)以表示“部分-整體”的層次結(jié)構(gòu)

C:為其他對象提供一種代理以控制對這個對象的訪問

D:運用共享技術(shù)有效地支持大量細粒度的對象

答案:B根據(jù)合成模式中提供父類對象的管理方法所在位置,即實現(xiàn)接口的區(qū)別分為兩種形式()。

A:繼承方式

B:安全方式

C:模糊方式

D:透明方式

答案:BD使用裝飾模式時應(yīng)注意(

)。

A:保持Component類的簡單性

B:接口的一致性

C:省略抽象的Decorator類

D:裝飾對象包含一個真實對象的引用

答案:ABCD裝飾器模式的優(yōu)點是()。

A:裝飾模式允許系統(tǒng)動態(tài)地決定貼上裝飾,或者除掉一個不需要的裝飾,繼承則不同,繼承是靜態(tài)的,它在系統(tǒng)運行前就決定了

B:裝飾模式與繼承關(guān)系的目的都是要擴展對象的功能,但是裝飾模式可以提供比繼承更多的靈活性

C:這種比繼承更加靈活機動的特性,也同時意味著裝飾模式比繼承更加容易出錯

D:通過使用不同的具體裝飾類以這些裝飾類的排列組合,設(shè)計師可以創(chuàng)造出很我不同行為的組合

答案:ABCD使用裝飾模式會產(chǎn)生比使用繼承關(guān)系更多的對象,更多的對象會使得查錯變得困難,特別是這些對象看上去都很像。

A:錯

B:對

答案:B需要增加由一個基本功能的排列組合而產(chǎn)生的非常大量的功能,從而使繼承關(guān)系變得不現(xiàn)實,此時可以使用裝飾器模式。

A:對

B:錯

答案:A需要擴展一個類的功能,或給一個類增加附加責(zé)任時可以使用裝飾器模式。

A:對

B:錯

答案:A第六章測試關(guān)于模式適用性,以下情況不適合使用代理(Proxy)模式的是(

)。

A:在需要用比較通用和復(fù)雜的對象指針代替簡單的指針的時候

B:根據(jù)需要創(chuàng)建開銷很大的對象

C:用戶想使用一個已經(jīng)存在的類,而它的接口不符合用戶的需求

D:取代了簡單的指針,它在訪向?qū)ο髸r執(zhí)行一些附加操作

答案:C以下意圖用來描述代理(Proxy)的是(

)。

A:用原型實例指定創(chuàng)建對象的種類,并且通過復(fù)制這些原型創(chuàng)建新的對象

B:將一個復(fù)雜對象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示

C:為其他對象提供一種代理以控制對這個對象的訪問

D:運用共享技術(shù)有效地支持大量細粒度的對象

答案:C代理模式的擴展是()。

A:靜態(tài)代理模式

B:單態(tài)代理模式

C:多態(tài)代理模式

D:動態(tài)代理模式

答案:D如果有一個2MB的文本(英文字母),為了對其中的字母進行分類和計數(shù),若為文本中的每個字母都定義一個對象顯然不合實際,對與該問題最好可使用的模式是(

)。

A:裝飾(Decorator)模式

B:合成(Composite)模式

C:享元(Flyweight)模式

D:命令(Command)模式

答案:C關(guān)于模式活用性,以下()不適合使用Flyweight(享元)模式。

A:一個應(yīng)用程序使用了大量的對象

B:對象的大多數(shù)狀態(tài)都可變?yōu)橥獠繝顟B(tài)

C:完全由于使用大量的對象,造成很大的存儲開銷

D:用戶想使用一個已經(jīng)存在的類,而它的接口不符合用戶的需求

答案:D代理模式有以下的應(yīng)用場景()。

A:控制不同種類客戶對真實對象的訪問權(quán)限時

B:為了隱藏目標對象存在于不同地址空間的事實,方便客戶端訪問時

C:當調(diào)用目標對象需要附加一些額外的處理功能時

D:要創(chuàng)建的目標對象開銷很大時

答案:ABCD代理模式的主要優(yōu)點()。

A:代理模式能將客戶端與目標對象分離

B:降低了系統(tǒng)的耦合度

C:代理模式在客戶端與目標對象之間起到一個中介作用和保護目標對象的作用

D:代理對象可以擴展目標對象的功能

答案:ABCD代理模式在客戶端和目標對象增加一個代理對象,會造成請求處理速度變慢。

A:對

B:錯

答案:A代理模式降低了系統(tǒng)的復(fù)雜度。

A:錯

B:對

答案:A系統(tǒng)中有大量對象時可以使用享元模式。

A:錯

B:對

答案:B第七章測試橋接(Bridge)模式不能用在下列哪個場合()。

A:對一個抽象的實現(xiàn)部分的修改應(yīng)對客戶不產(chǎn)生影響,即客戶的代碼不必重新編譯

B:客戶程序與抽象類的實現(xiàn)部分之間存在著很大的依賴性

C:類的抽象以及它的實現(xiàn)都應(yīng)該可以通過生成子類的方法加以擴充,這時Bridge模式使用戶可以對不同的抽象接口和實現(xiàn)部分進行組合,井分別對它們進行擴充

D:用戶不希望在抽像和它的實現(xiàn)部分之間有一個固定的綁定關(guān)系,例如,這種情況可能是因為在程序運行時刻實現(xiàn)部分應(yīng)可以被選擇或者切換

答案:B以下用來描述橋接(Bridge)的意圖是(

)。

A:將一個復(fù)雜對象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示

B:將抽象部分與它的實現(xiàn)部分分離,使它們都可以獨立變化

C:動態(tài)地給一個對象添加一些額外的職責(zé)

D:提供一個創(chuàng)建一系列相關(guān)或相互依賴對象的接口,面無須指定它們具體的類

答案:B以下可用來描述外觀(Facade)的是()。

A:在不破壞封裝性的前提下,捕獲一個對象的內(nèi)部狀態(tài),并在該對象之外保存這個狀態(tài)。這樣以后就可將該對象恢復(fù)到原先保存的狀態(tài)

B:為子系統(tǒng)中的一組接口提供一個一致的界面,本模式定義了一個高層接口,這個接口使得這一子系統(tǒng)更加容易使用

C:定義一個用于創(chuàng)建對象的接口,讓子類決定實例化哪一個類

D:保證一個類僅有一個實例,并提供一個訪問它的全局訪問點

答案:B在不破壞類封裝性的基礎(chǔ)上,使得類可以同不曾估計到的系統(tǒng)進行交互,主要體現(xiàn)在(

)。

A:原型(Prototype)模式

B:適配器(Adapte)模式

C:橋接(Bridge)模式

D:合成(Composite)模式

答案:BC橋接(Bridge)模式的優(yōu)點有(

)。

A:實現(xiàn)細節(jié)對客戶透明

B:分離接口及其實現(xiàn)部分

C:改變值以指定新對象

D:提高可擴充性

答案:ABD使用橋接(Bridge)模式時需要注意(

)。

A:共享實現(xiàn)類的接口Implementor對象

B:想使用一個已經(jīng)存在的類,而它的接口不符合需求

C:創(chuàng)建正確的實現(xiàn)類的接口Implementor對象

D:僅有一個實現(xiàn)類的接口Implementor

答案:ACD外觀(Facade)模式的優(yōu)點有()。

A:降低了大型軟件系統(tǒng)中的編譯依賴性,簡化了系統(tǒng)在不同平臺之間的移植過程

B:降低了子系統(tǒng)與客戶端之間的耦合度,使得子系統(tǒng)的變化不會影響到調(diào)用它的客戶類

C:對客戶屏蔽了子系統(tǒng)組件,減少了客戶處理的對象數(shù)目

D:使得子系統(tǒng)使用起來更加容易

答案:ABCD外觀(Facade)模式能很好地限制客戶使用子系統(tǒng)類。

A:對

B:錯

答案:B橋梁(橋接Bridge)模式中,抽象類依賴實現(xiàn)類。

A:錯

B:對

答案:BJAVA的三層開發(fā)模式可用門面(外觀Facade)模式。

A:對

B:錯

答案:A第八章測試關(guān)于模式適用性,(

)不適合使用職責(zé)鏈(ChainofResponsibility)模式。

A:可以處理一個請求的對象集合應(yīng)被動態(tài)指定

B:用戶想在不明確指定接收者的情況下,向多個對象中的一個提交一個請求

C:在需要用比較通用和復(fù)雜的對象指針代替簡單的指針的時候

D:有多個的對象可以處理一個請求,哪個對象處理該請求運行時刻自動確定

答案:CJava的異常處理機制可理解為(

)行為模式。

A:職責(zé)鏈(ChainofResponsibility)模式

B:觀察者(Observer)模式

C:迭代器(Iterator)模式

D:策略(Strategy)模式

答案:A以下意圖()可用來描述解釋器(Interpreter)。

A:將一個復(fù)雜對象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過程可以創(chuàng)建不用的表示

B:給定一個語言,定義它的文法的一種表示,并定義一個解釋器,這個解釋器使用該表示來解釋語言中的句子

C:為其它對象提供一種代理以控制對這個對象的訪問

D:將抽象部分與它的現(xiàn)實部分分離,使它們都可以獨立變化

答案:B使多個對象都有機會處理請求,從而避免請求的發(fā)送者和接收者之間的耦合關(guān)系可用來描述職責(zé)鏈(ChainofResponsibility)。

A:錯

B:對

答案:B責(zé)任鏈模式優(yōu)點包括()。

A:增加新的請求處理類很方便

B:增強給對象指派職責(zé)的靈活性,通過改變鏈內(nèi)的成員或者調(diào)動它們的次序,允許動態(tài)地新增或者刪除責(zé)任

C:簡化了對象。使得對象不需要知道鏈的結(jié)構(gòu)

D:降低耦合度,它將請求的發(fā)送者和接收者解耦

答案:ABCD解釋器模式的優(yōu)點是()。

A:對于復(fù)雜的文法較易維護

B:增加了新的解釋表達式的方式

C:易于實現(xiàn)簡單文法

D:可擴展性比較好,靈活

答案:BCD命令模式中,請求以命令的形式包裹在對象中,并傳給調(diào)用對象。

A:對

B:錯

答案:A責(zé)任鏈模式可動態(tài)指定一組對象處理請求。

A:對

B:錯

答案:A解釋器模式可利用場景比較少,JAVA中如果碰到可以用expression4J代替。

A:錯

B:對

答案:B職責(zé)鏈模式中純的職責(zé)鏈模式比不純的職責(zé)鏈模式優(yōu)先級高。

A:對

B:錯

答案:B第九章測試以下選項可用來描述觀察者(Observer)的是()。

A:定義對象間的一種一對多的依賴關(guān)系,當一個對象的狀態(tài)發(fā)生改變時,所有依賴于它的對象都得到通知并被自動更新

B:使多個對象都有機會處理請求,從而避免請求的發(fā)送者和接收者之間的耦合關(guān)系

C:將抽象部分與它的現(xiàn)實部分分離,使它們都可以獨立變化。

D:用原型實例指定創(chuàng)建對象的種類,并且通過復(fù)制這些原型創(chuàng)建新的對象

答案:A以下哪一種說法可用來描述備忘錄(Memento)()。

A:在不破壞封裝性的前提下,捕獲一個對象的內(nèi)部狀態(tài),并在該對象之外保存這個狀態(tài),這樣以后就可將該對象恢復(fù)到原先保存的狀態(tài)

B:保證一個類只有一個實例,并提供一個訪問它的全局訪問點

C:將一個請求封裝為一個對象,從而使用戶可用不同的請求對客戶進行參數(shù)化;對請求進行排隊或記錄請求日志,以及支持可撤銷的操作

D:提供一種方法順序訪問一個聚合對象中各個元素,而又不暴露該對象的內(nèi)部表示

答案:A觀察者(Observer)模式適用于()。

A:當對一個對象的改變需要同時改變其它對象,而不知道具體有多少對象有待改變

B:當一個對象必須通知其他對象,而他又不能假定其它對象是誰。換言之,用戶不希望這些對象是緊密耦合的

C:一個對象結(jié)構(gòu)包含很多類對象,它們有不同的接口,而想對這些對象實施一些依賴于其具體類的操作

D:當一個抽象模型有兩個方面,其中一個方面依賴于另一方面。將這二者封裝在獨立的對象中以使它們可以各自獨立的改變和復(fù)用

答案:ABD觀察者模式允許用戶獨立地改變目標和觀察者。用戶可以單獨復(fù)用目標對象而無須同時復(fù)用其觀察者,反之亦然。它也使用戶可以在不改動目標和其他的觀察者的前提下增加觀察者。下面(

)是觀察者模式其他的優(yōu)缺點。

A:意外的更新

B:支持廣播通信

C:它使得狀態(tài)轉(zhuǎn)換顯示化

D:目標和觀察者間的抽象耦合

答案:ABD觀察者模式(ObserverPattern)還有()其他名稱。

A:從屬者(Dependents)模式

B:模型-視圖(Model/View)模式

C:發(fā)布-訂閱(Publish/Subscribe)模式

D:源-監(jiān)聽器(Source/Listener)模式

答案:ABCD備忘錄模式有以下(

)的效果。

A:使用備忘錄可能代價很高

B:保持封裝邊界

C:它簡化了原發(fā)器

D:維護備忘錄的潛在代價

答案:ABCD迭代器模式的結(jié)構(gòu)包括()。

A:具體聚合(ConcreteAggregate)角色

B:抽象迭代器(Iterator)角色

C:具體迭代器(ConcreteIterator)角色

D:抽象聚合(Aggregate)角色

答案:ABCD觀察者可以改變被觀察者的狀態(tài),再由被觀察者通知所有觀察者依據(jù)被觀察者的狀態(tài)進行。

A:錯

B:對

答案:A被觀察者可以通知觀察者進行更新。

A:對

B:錯

答案:A拍賣的時候,拍賣師觀察最高標價,然后通知給其他競價者競價,可以用觀察者模式。

A:對

B:錯

答案:A第十章測試關(guān)于模式適用性,以下()不適合使用策略(Strategy)模式。

A:需要使用一個算法的不同變體。例如,用戶可能會定義一些反應(yīng)不同的空間/時間權(quán)衡的算法。當這些變體實現(xiàn)為一個算法的類的層次時,可以使用策略模式

B:當一個對象必須通知其他對象,而它又不能假定其他對象是誰。換言之,用戶不希望這些對象是緊密結(jié)合的

C:算法使用客戶不應(yīng)該知道的數(shù)據(jù)??墒褂貌呗阅J揭员苊獗┞稄?fù)雜的、與算法相關(guān)的數(shù)據(jù)結(jié)構(gòu)

D:許多相關(guān)的類僅僅是行為有異。“策略”提供了一種用多個行為中的一個行為來配置一個類的方法

答案:B以下意圖(

)可用來描述訪問者(Visitor)。

A:用原型實例指定對象的種類,并且通過復(fù)制這些原型創(chuàng)建新的對象

B:在不破壞封裝性的前提下,捕獲一個對象的內(nèi)部狀態(tài),并在該對象之外保存這個狀態(tài),這樣以后就可將該對象恢復(fù)到原先保存的狀態(tài)

C:表示一個作用于某對象結(jié)構(gòu)中的各個元素的操作

D:定義對象間的一種一對多的依賴關(guān)系,當一個對象的狀態(tài)發(fā)生改變時,所有依賴于它的對象都得到通知并被自動更新

答案:C狀態(tài)(State)模式有下面(

)效果。

A:通過類層次進行訪問

B:它使得狀態(tài)轉(zhuǎn)換顯示化

C:State對象可以被共享

D:它將與特定狀態(tài)相關(guān)的行為局部化,并且將不同狀態(tài)的行為分割開來

答案:BCD下面()是策略(Strategy)模式的優(yōu)缺點。

A:一個替代繼承的方法

B:消除了一些條件語句

C:相關(guān)算法系列

D:改變對象外殼與改變對象內(nèi)核

答案:ABC訪問者模式使得易于增加新的操作。

A:對

B:錯

答案:A訪問者集中相關(guān)的操作而分離無關(guān)的操作。

A:對

B:錯

答案:A策略對象改變context對象的執(zhí)行算法。

A:對

B:錯

答案:A策略模式關(guān)鍵在于實現(xiàn)不同的接口。

A:錯

B:對

答案:A策略模式會使策略類會增多。

A:對

B:錯

答案:A在對象的數(shù)據(jù)類型很少改變,但是需要經(jīng)常的改變操作或者增加新操作的情況下可以使用訪問者模式。

A:錯

B:對

答案:B第十一章測試關(guān)于模式適用性,以下()不適合使用模板方法(TemplateMethod)模式。

A:控制子類擴展。模板方法只在特定點調(diào)用“hook”操作,這樣就只允許在這些點進行擴展

B:各子類中公共的行為應(yīng)該被提取出來并集中到一個公共父類中以避免代碼重復(fù)。首先識別現(xiàn)有代碼中的不同之處,并且將不同之處分離為新的操作。最后,用一個調(diào)用這些新的操作的模板方法來替換這些不同的代碼

C:當對一個對象的改變需要同時改變其他對象,而不知道具體有多少對象有待改變

D:一次性實現(xiàn)一個算法的不變的部分,并將可變的行為留給子類來實現(xiàn)

答案:C模板方法模式的基本方法是整個算法中的一個步驟,它包含()幾種類型。

A:抽象方法

B:具體方法

C:鉤子方法

D:繼承方法

答案:ABC模板方法的主要優(yōu)點是()。

A:它在父類中提取了公共的部分代碼,便于代碼復(fù)用

B:部分方法是由子類實現(xiàn)的,因此子類可以通過擴展方式增加相應(yīng)的功能,符合開閉原則

C:它把認為是不變部分的算法封裝到父類中

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論