設計模式復習1.0_第1頁
設計模式復習1.0_第2頁
設計模式復習1.0_第3頁
設計模式復習1.0_第4頁
設計模式復習1.0_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、創(chuàng)建型模式:抽象工廠模式 (Abstract Factory)、建造者模式 (Builder)、工廠方法模式 (Factory Method)原型模式 (Prototype)、單例模式(Singleton)結構型模式:適配器模式(Adapter)、橋接模式(Bridge)、組合 模式(Composite)、裝飾模式 (Decorator)、外觀模式 (Facade)、享元模式(Flyweight)行為型模式:職責鏈模式(Chain of Responsibility)命令模式 (Command)、觀察者模式 (Observer)模板方法模式 (Template Method)2. 接口:包含了

2、一系列不被實現(xiàn)的方法,而把這些方 法的實現(xiàn)交給繼承它的類。3. 組合一個類是另一個類的組成成分。4. 多態(tài):相關的對象按照各自類型來實現(xiàn)方法的能力。1. 抽象是指不同事物之間概念上的聯(lián)系方式。2. 重構修改代碼改進結構但不增加新功能,就是所 謂重構。3. 內(nèi)聚性指的是例程中操作之間聯(lián)系的緊密程度。4. 耦合性指的是兩個例程之間聯(lián)系的緊密程度。2. 組合爆炸:隨著問題中元素的增加,所出現(xiàn)的可能 組合數(shù)劇烈增加,形象的說法就是組合爆炸。3. 封裝:任何形式的隱藏。對象對它們的數(shù)據(jù)進行封 裝。抽象類對它們派生出的具體類進行封裝4. 抽象類:為一組概念上相似的類定義方法和公共屬 性。抽象類絕對不能被實

3、例化。5. 具體類:是能被直接實例化的類、用例、信號、其 他類元或其他泛化元素,它也可以用來描述實現(xiàn)的操 作。2. 結構型模式:將現(xiàn)存的對象結合在一起,處理接口,將實現(xiàn)與抽象類聯(lián)系起來。3. 行為型模式:提供一種顯得靈活(變化)的行為,包容變化的模式。例如, strategy模式和 observer模 式。4. 創(chuàng)建型模式:創(chuàng)建或實例化對象2. 重載:一個類中的方法與另一個方法同名,但是參 數(shù)表不同,這種方法稱之為重載方法。3. 虛擬方法:當實例方法聲明包含virtual修飾符時,稱該方法為虛擬方法。2. 構造函數(shù):對對象進行初始化或初始設置。3. 規(guī)格:生產(chǎn)的成品或所使用的原材料等規(guī)定的質量

4、 標準。3.多線程:在單個程序中同時運行多個線程完成不同的工作,稱為多線程.第5章設計模式試題1. 設計模式具有的優(yōu)點( 適應需求變化)2. 設計模式一般用來解決什么樣的問題(同一問題的不同表相)。3. 設計模式的兩大主題是(系統(tǒng)復用與系統(tǒng)擴展)。4. 以下哪些問題通過應用設計模式不能夠解決。(確定軟件的功能都正確實現(xiàn) )2. 設計模式基本原則包括:開閉原則,(從場景進行設計的原則),包容變化原則。3. 設計模式是一個(抽象)的方案,它可以解決一類問 題。4. 1.在設計模式群體中,效果是指( 原因和結果)。2. 模板:模式定義一個操作中的算法的骨架,而將一 些步驟延遲到子類中。3. 模式:就

5、是解決某一類問題的方法論。把解決某類 問題的方法總結歸納到理論高度,那就是模式。4. 內(nèi)聚度:模塊內(nèi)部各成分彼此結合的緊密程度。1. 什么是設計模式?設計模式的目標是什么?設計模式是一套被反復使用、多數(shù)人知曉的、經(jīng) 過分類編目的、代碼設計經(jīng)驗的總結。使用設計模式 是為了可重用代碼、讓代碼更容易被他人理解、保證 代碼可靠性。2. 設計模式的基本要素有哪些?名稱,意圖,問題,解決方案,參與者和協(xié)作者, 效果,實現(xiàn),GOF參考。3. 設計模式中一般都遵循的原則有什么?開-閉原則,根據(jù)場景進行設計原則,優(yōu)先組合原 則,包容變化原則。4. 四人團針對“創(chuàng)建優(yōu)秀面向對象設計”建議了哪些 策略?針對接口編程

6、,優(yōu)先使用對象組合而不是類繼承, 找到并封裝變化點。第6章facade(外觀)模式1. 外觀模式的作用是 (為了系統(tǒng)中的一組功能調(diào)用提 供一個一致的接口,這個接口使得這一子系統(tǒng)更加容 易使用。)。1. Facade模式可以用來(隱藏)系統(tǒng)。該模式能夠將 系統(tǒng)作為自己的私有成員包含進來。2. Fa?ade模式要解決的問題:只需要使用一個復雜系 統(tǒng)的一個(子集)。或者,需要用一種特殊的方式與系 統(tǒng)交互。3. Fa?ade模式不僅可以為方法調(diào)用創(chuàng)建更( 簡單)的 接口,還可以減少客戶必須處理的對象數(shù)量。1. Fa?ade(外觀)模式不僅可以為方法調(diào)用創(chuàng)建更簡單的接口,還可以減少客戶必須處理的對象數(shù)量

7、。對Fa?ade模式:模式定義了一個高層接口,使得這一子 系統(tǒng)更加容易使用,為子系統(tǒng)中的一組接口提供一個 一致的界面。Fa?ade(外觀)模式解決問題的方案是什么? 如何實 現(xiàn)?Fa?ade向客戶展現(xiàn)使用現(xiàn)有系統(tǒng)的一個新的接口。 如何實現(xiàn):定義一個(或一組)新的類來封裝所需的 接口。讓新的類使用現(xiàn)有的系統(tǒng)。2. 請簡要說明在一個復雜系統(tǒng)中應用Fa?ade(外觀) 模式的優(yōu)點。當擁有一個復雜的系統(tǒng)時,F(xiàn)a?ade (外觀)模式使我們只需要使用它的一部分功能。最終我們將得到 一個更簡單,更容易使用的或根據(jù)我們的需要定制的 系統(tǒng)。3. Fa?ade模式的意圖是什么?望那個簡化現(xiàn)有系統(tǒng)的使用方法,需要

8、定義自己 的接口。1. 請論述在一個系統(tǒng)中應用Fa?ade(外觀)模式的必要性,并給出一種解決方案。Fa?ade (外觀)模式不僅可以為方法調(diào)用創(chuàng)建更 簡單的接口,還可以減少客戶必須處理的對象數(shù)量。 舉個例子。假設有一個Client對象,這個對象必須處理 Database、Model、Element 類的對象。Client 必須 首先通過Database對象打開數(shù)據(jù)庫,以得到一個對 Model對象的引用,然后再向Model對象請求一個Element對象,最后向 Element對象查詢所需的信息。而如果能創(chuàng)建一個 DatabaseFacade類,讓Client對象 向它發(fā)出請求,那么上面的過程可

9、能就會變得簡單一 些。第7章Adapter(適配器濮式4. 以下關于結構型模式說法不正確的是。()A)結構型模式可以在不破壞類封裝性的基礎上, 實現(xiàn)新的功能。B)結構型模式主要用于創(chuàng)建一組對象。C)結構型模式可以創(chuàng)建一組類的統(tǒng)一訪問接口。D)結構型模式可以在不破壞類封裝性的基礎上, 使得類可以同不曾估計到的系統(tǒng)進行交互。2. Adapter模式有兩種類型有:對象Adapter模式、(類 Adapter模式)。3. UML是一種用來創(chuàng)建(程序模型)的圖像語言。5. 適配器模式,分為類的適配器和對象的適配器 兩種實現(xiàn)。其中類的適配器采用的是( 繼承)關系, 而對象適配器采用的是 組合聚類 關系。1

10、. 對象適配器模式是合成聚合復用原則的典型 應用。對2. 對象 Adapter模式:使用Adapter模式與適當 的抽象類相匹配,它通常依賴于一個對象(適配對象) 包含另一個對象(被適配對象)。3. 類Adapter模式:當實現(xiàn)Adapter模式的方法 是使用多重繼承。在這種情況下,它被成為類Adapter 模式。1. 給出Adapter模式的定義及意圖。意圖是將一個類的接口轉換成客戶希望的另外一 個接口。Adapter模式使原本由于接口不兼容而不能一 起工作的那些類可以一起工作。2. Adapter模式的最常見的用法是什么?該模式 可以使你不用操心什么方面?Adapter模式最通常的用途就是

11、保持多態(tài)。Adapter模式讓我們在進行設計時不必再擔心現(xiàn)存類的接口問 題。3. Adapter模式問題的解決方案以及如何實現(xiàn)? 解決方案是Adapter模式用我們需要的接口對無法修改的類進行包裝。實現(xiàn):將現(xiàn)存的類包含在另一 個類之中。包容類與需要的接口相匹配,并調(diào)用被包容類的 方法。4. 請簡要說明在軟件設計中設計模式的作用?軟件設計模式(Design Pattern )是一套被反復使 用、多數(shù)人知曉的、經(jīng)過分類編目的代碼設計經(jīng)驗的 總結。使用設計模式是為了適應需求變化、可重用代 碼、讓代碼更容易被他人理解、保證代碼的可靠性。1.根據(jù)你的理解,請分析Fa?ade模式比Adapter模式的相同

12、點和不同點,并說明它們在實際應用中的 差異?在兩個模式中,都擁有現(xiàn)存的類,但是在Fa?ade模式中,無須針對某個接口進行設計;而在Adapter模式中則必須針對某個特定接口進行設計。在Fa?ade模式中,動機是簡化接口,而在Adapter模式中,盡管也是越簡單越好,目的是針對一個現(xiàn)有的接口進行 設計,并不能簡化任何東西,即使可能有另一個更簡 單的接口。總之,在實際應用中,F(xiàn)a?ade模式簡化接口,而Adapter模式將接口轉換成另一個現(xiàn)有的接口。第9章Bridge(橋接)模式1. 關于繼承表述錯誤的是:(繼承本質上是“白盒復用”,對父類的修改,不會影響到子類。)2. 在不破壞類封裝性的基礎上,

13、使得類可以同不曾估計到的系統(tǒng)進行交互。主要體現(xiàn)在(橋接模式(Bridge)。3. 行為類模式使用(繼承機制)在類間分派行 為。4. 下面的類圖表示的是哪個設計模式?(橋接模式(Bridge)。5. Bridge (橋接)模式的意圖是(將一組實現(xiàn)部分 從另一組使用它們的對象中分離出來使它們可以獨立 地變化)。7. 以下敘述不對的是(Bridge模式優(yōu)先使用繼承 而不是組合.)。9. 對Alexander的模式哲學,以下敘述正確的是(每個模式,可以無數(shù)次使用模式提供的解決方案,而不必再次重復同樣的工作方式.)。10. 根據(jù)Coplien關于共同點/變化點的說法,下面 哪個是正確的(共同點分析是尋找

14、家族成員的相同元素.)。1. 在存在繼承關系的情況下,方法向超類方向集 中,而數(shù)據(jù)向(子類)方向集中。2. 當存在一個抽象有不同實現(xiàn)時Bridge模式最為有用,它可以使抽象和(實現(xiàn))相互獨立地進行變化。3. (類型的封裝)是通過多態(tài)使用具有派生類的 抽象類實現(xiàn)的。5. C+中,必須用一個定義(公共接口)的抽象類 來實現(xiàn)Bridge模式的實現(xiàn)部分。6. 為了提高內(nèi)聚和(松耦合),我們經(jīng)常會抽象出 一些類的公共接口以形成抽象基類或者接口。7. 封裝性好的代碼更容易測試,因為它與其他代 碼沒有(耦合)。8. Bridge (橋接)模式是將抽象部分與它的實現(xiàn)部 分分離,其中(實現(xiàn)部分)是指用來實現(xiàn)抽象

15、類的派 生類的對象。1. Bridge模式要解決的基本問題是什么?Bridge (橋接)模式適用于一個抽象部分擁有不同 的實現(xiàn)部分的情況,它讓抽象部分和實現(xiàn)部分可以各 自獨立的變化。2. 給出Bridge模式的定義。采用Bridge模式的效果是 什么?將抽象化與實現(xiàn)化脫耦,使得二者可以獨立的變 化,也就是說將他們之間的強關聯(lián)變成弱關聯(lián),也就 是指在一個軟件系統(tǒng)的抽象化和實現(xiàn)化之間使用組合 /聚合關系而不是繼承關系,從而使兩者可以獨立的變 化。效果是:“實現(xiàn)部分與使用它的對象的分離”增加 了靈活性。客戶對象不需要了解實現(xiàn)問題。3. 什么是一條規(guī)則,一個地方”?抽象類經(jīng)常讓自己的方法實際使用實現(xiàn)部

16、分對象。 抽象部分的派生類將調(diào)用這些方法。這樣如果需要修 改,修改也會容易些,并且在實現(xiàn)整個模式之前讓你 擁有一個好的起點。4. 在學習Bridge (橋接)模式的過程中,應該遵循下 列處理變化的基本策略是什么?找出變化并封裝變化點;優(yōu)先使用對象組合,而 不是類繼承。5. Bridge (橋接)模式的解決方案是什么,以及如何 實現(xiàn)?解決的問題是:為所有的實現(xiàn)部分定義一個接口, 讓抽象類的所有派生類使用這個接口。實現(xiàn):將實現(xiàn) 部分封裝在一個抽象類中。在被實現(xiàn)的抽象部分基類 中包含一個實現(xiàn)部分基類的句柄。1. 根據(jù)你對 Bridge模式的理解,概要描述使用 該模式的應用要求,并給出相應的設計類圖。

17、當存在一個抽象有不同實現(xiàn)時Bridge模式最為有用,它可以使抽象和實現(xiàn)相互獨立地進行變化。2. 舉例說明使用 Bridge模式的場合,給出在該 場合下使用Bridge模式的解決方案,并說明該解決方 案的優(yōu)點。打印驅動程序是 Bridge模式最典型的例子,也是 最適合應用Bridge模式的場合。Bridge模式的真正威 力在于它能夠幫助我們看到什么時候應該從問題域中 提取實現(xiàn)。也就是說,有時候有一個實體X使用系統(tǒng)S,個實體Y使用系統(tǒng)T。我們可能認為 X總是與S 相伴,而Y總是與T相伴,因此就將它們聯(lián)系(耦合) 起來。Bridge模式提醒我們,可以抽象出S和T,這樣 更好,也就是說,Bridge模

18、式最有用的地方,是在解 耦抽象與實現(xiàn)之前考慮Bridge模式是否適用。第10章 Abstract Factory抽象工廠 濮式1. 靜態(tài)工廠的核心角色是(抽象產(chǎn)品)。4. Abstract Factory (抽象工廠)模式的意圖是(提供一個創(chuàng)建一系列相關或相互依賴對象的接口,而無需指 定它們具體的類)。5. 在根據(jù)不同的機器選擇設備驅動程序的案例中,以下敘述不準確的是()。A可以使用switch語句選擇驅動程序.B. 可以使用繼承來實現(xiàn)選擇驅動程序,但它可能會產(chǎn)生類組合爆炸問題.C. 可以選擇抽象工廠模式實現(xiàn),且能避免組合爆炸問題.D. 使用繼承的解決方案要比switch語句有更多的優(yōu)勢.6.

19、 以下有關Abstract Factory (抽象工廠)模式正確的是(Abstract Factory類和具體工廠方法可以分離,每個 具體工廠負責一個抽象工廠方法接口的實現(xiàn).)。7. 根據(jù)設計模式,有關抽象工廠模式的定義,準確的說法是(要創(chuàng)造的東西本身是抽象定義的,工廠方法可以靈活實現(xiàn))。8. 關于抽象工廠模式,以下敘述不正確的是(客戶對象不需要知道向誰請求所需的對象和如何使用這些對象。)9. 關于抽象工廠模式( Abstract Factory ), 以下敘述正確的是(抽象工廠定義接口,具體工廠實現(xiàn)某一接口)。2. 工廠模式分為簡單工廠,工廠方法,(抽象工廠)三種類型。4. Abstract

20、 Factory模式強調(diào)的是為創(chuàng)建多個相互 依賴的對象提供一個(同一的接口)。5. 我們可以使用(抽象工廠)模式,不同應用程 序都使用同一子系統(tǒng)。7. 當一個系統(tǒng)要(獨立)于它的產(chǎn)品的創(chuàng)建、組合和表示時適合用Abstract Factory模式。8. Abstract Factory模式為如何創(chuàng)建對象組的每個成員定義(接口)。9. 抽象工廠模式是定義一個( 抽象類),然后為 每個組實現(xiàn)一個具體類。10. Abstract Factory模式將如何執(zhí)行對象(實例化)規(guī)則從使用這些對象的客戶對象提取出來。1. Abstract Factory (抽象工廠)模式就是用來解決這類問題的:要創(chuàng)建一組相關

21、或者相互依賴的對象。1. Abstract Factory的三個關鍵策略是什么?發(fā)現(xiàn)并封裝變化點;優(yōu)先使用對象組合,而不是 類繼承;針對接口設計,而不是針對實現(xiàn)設計。2. 采用Abstract Factory模式的效果是什么?效果:這個模式將“使用哪些對象” 的規(guī)則與“” 如何使用這些對象“的邏輯相隔離。3. 為什么這個模式被稱為“Abstract Factory7?因為它要創(chuàng)建的東西本身是由抽象定義的。工廠 各種變化的實現(xiàn)如何選擇,模式并沒有具體規(guī)定。4. 如何獲得正確的工廠對象?決定需要哪個工廠對象實際上是判斷需要哪個系 列的對象。如何知道自己需要哪個系列呢?在類似的 案例中,最可能的是由

22、一個配置文件來告訴我們。然 后就可以寫幾行代碼,根據(jù)這些配置信息來將合適的 工廠對象實例化。5. 在Abstract Factory (抽象工廠)模式中對象的角色 是什么?客戶對象只知道“向誰請求需要的對象”和“如 何使用這些對象。Abstract Factory類通過為每種不 同類型的對象定義一個方法來指定哪些對象可以被 實例化。典型情況下,一個Abstract Factor對象將針對 每種必須實例化的對象擁有一個方法。具體工廠指定 哪些對象將被實例化。1. 請結合抽象工廠模式,說明在實際應用中如何 生成正確的對象。決定需要哪個工廠對象實際上與確定使用哪一組 對象是相同的。例如,在驅動程序問

23、題中,有一組低 分辨率動程序和一組高分辨率驅動程序,怎樣才能知 道自己需要哪一組呢?在類似這樣的例子中,很可能通過一個配置文件獲知這一信息。然后可以編寫幾行 代碼,根據(jù)配置信息將合適的工廠對象實例化。還可 以使用Abstract Factory模式,不同應用程序都使用同 一子系統(tǒng)。在這種情況下,工廠對象將傳給子系統(tǒng), 告訴子系統(tǒng)將要使用哪些對象,此時,通常主系統(tǒng)知 道子系統(tǒng)需要那一組對象,在調(diào)用子系統(tǒng)之前,將實 例化正確的工廠對象。第12章用模式解決 CAD/CAM問題2. 當我們想創(chuàng)建一個具體的對象而又不希望指定具 體的類時,可以使用(創(chuàng)建型)模式。3.實現(xiàn)部分各 不相同,但都可以通過一個通

24、用接口被訪問是 (Bridge )模式中的包容變化。4. 以下哪一條是Alexander的場景原則:(當你有一個 涉及創(chuàng)建對象的設計模式時,對象應為模式提供場景)5. 最高級別的模式約束其他的模式的不正確的敘述 是(最高級別的模式是最重要的,其他的模式是次要的)。1. 設計模式的思想根源是(開閉)基本原則的宏觀 運用,本質上是沒有任何模式的,發(fā)現(xiàn)模式的人永遠是 大師,而死守模式的人,最多只能是一個工匠。2. 模式不僅僅是包容變化,它們還是變化之間的(關聯(lián))。3. 系統(tǒng)中為其他模式確定場景的一個或兩個模式,這個模式將對其他模式能做的事進行(約束)。4. 通常情況下,當一個模式使用另一個模式時,

25、看起來被使用模式是在使用模式的(場景)之中的。5. 系統(tǒng)中的一個模式經(jīng)常通過為系統(tǒng)中的其他模式提供(場景)與其他模式相關聯(lián)。1. 場景:一些事物存在或發(fā)生的相互關聯(lián)的狀態(tài)。2. CVA:共同點/變化點分析3. 場景原則:當有一個涉及創(chuàng)建對象的設計模式時, 這些對象為這個模式提供場景。1. 考慮場景時使用的一條原則是什么?考慮在系統(tǒng)中需要什么,然后再關心如何實現(xiàn)它。 這也符合Alexander的場景原則:當有一個涉及創(chuàng)建對 象的設計模式時,這些對象為這個模式提供場景。2. 用模式的方法思考的步驟是什么?發(fā)現(xiàn)在問題領域中擁有的模式,這些是需要分析 的模式;對于這些需要分析的模式,做下列工作:a.挑

26、出為其他模式提供最多場景的模式。b.在我的概念性最高的設計中使用這個模式。c識別任何可能已經(jīng)出現(xiàn)的附加模式。將它們添加到“需要分析的模式中”。d.對于需要分析而還未分析的模式,重復上述過程; 按照需要將細節(jié)添加到設計中。擴展方法和類定義。3. 場景和被使用模式之間有什么關聯(lián)?通常情況下,當一個模式使用另一個模式時,看 起來被使用模式是在使用模式的場景之中的。這條規(guī) 則也可能有例外,但是看起在大多數(shù)時候它都是有效 的。4. 什么是“最高模式”?指系統(tǒng)中為其他模式建立背景的一兩個模式。這 個模式將約束其他模式的行為。5. 為一個龐大的工程的 CAD/CAM系統(tǒng)提供支持的基 本需求是什么?創(chuàng)建一個計

27、算機程序,它能讀取一個CAD/CAM數(shù) 據(jù)集并從中提取部件,一個現(xiàn)有的專家系統(tǒng)需要這些 部件才能進行智能設計。這個系統(tǒng)應該向 CAD/CAM系 統(tǒng)屏蔽專家系統(tǒng)。復雜的是CAD/CAM系統(tǒng)正處于變化 之中。可能有CAD/CAM系統(tǒng)的多個潛在版本存在,而專家系統(tǒng)需要擁有它們的接口。第13章設計模式的原則和策略1. Open-Close原則的含義是一個軟件實體(應當對 擴展開放.,對修改關閉)。2. 典型情況下,(Facade)模式不包容變化。2. 最基本的UML圖是(類圖)。它不僅描述了類, 而且說明了類之間的關系。3. 模塊,方法和類應該對擴展是開放的,而對更 改是(封閉)的。4. Alexan

28、der告訴我們要從(場景)進行設計,在設計我們的片段出現(xiàn)的細節(jié)之前先創(chuàng)建整體視圖。5. Bridge模式不僅僅對抽象部分和實現(xiàn)部分的變 化進行定義和包容,而且還定義了兩個變化之間的(關 聯(lián))。1. 什么是開-閉原則?模塊,方法和類應該對擴展是開放的,而對更改 是封閉的。換句話說,我們必須將我們的軟件設計成 這樣:我們可以在不修改代碼的前提下對我們的軟件 進行擴展。2. 哪些因素決定了用哪種方案來實現(xiàn)AbstractFactory 模式?未來變化的可能性;“不修改當前系統(tǒng)”的重要性; 誰來控制將被創(chuàng)建的對象系列(是我們還是其他的開 發(fā)組);使用的編程語言;數(shù)據(jù)庫或配置文件的可用性。3. 按照模式

29、進行設計的策略是什么?1. 開放-封閉的原則2.從場景進行設計 3.在類中 包容變化。4. 請舉例說明如何根據(jù)模式為其他的模式創(chuàng)造 場景來選擇模式。比如,Bridge-Facade關聯(lián),使用 Facade模式來簡 化V1系統(tǒng)的接口, Bridge模式的實現(xiàn)部分之一使用 Facade模式所創(chuàng)建的新接口。因此,Bridge模式為Facade模式創(chuàng)造了場景。5. 為什么說Bridge是包容變化原則的一個精彩的 范例?Bridge模式中的實現(xiàn)部分各不相同,但都可以通 過一個通用接口被訪問。系統(tǒng)可以接納新的實現(xiàn)部分,只要它也使用這個通用接口來實現(xiàn)。1. 在本書的應用案例中,為什么認為Bridge模式 高

30、于Adapter模式? 請舉例說明。Bridge模式的應用情景是在概念的抽象有變化及 其實現(xiàn)方式有多個。而Adapter模式的應用情景是原有對象的接口和需要的接口有差別。而大多數(shù)情景下Bridge模式是作為 Adapter模式的背景。也就是Bridge 是Adapter的“最高模式,在用Bridge模式封裝實現(xiàn) 時,大多數(shù)的實現(xiàn)并不可以派生自相同的基類,這時 Adapter模式就可以派上用場了。第 16 章 Singleton(單件)和 Double-CheckedLocking雙重檢查鎖定)模式1. Singleton模式適用于(當這個唯一實例應該是通過子類化可擴展的,并且客戶應該無需更改代

31、碼就能使 用一個擴展的實例時)。5. 單例模式(Singleton)(裝飾)模式的 意圖是:(你 希望只擁有一個對象,但不用全局對象來控制對象的 實例化)。1. (單例)模式確保某一個類僅有一個實例,并 自行實例化向整個系統(tǒng)提供這個實例。2. (單例)模式只應在有真正的“單一實例”的 需求時才可使用。4. Singleton (單件)模式和 Double-Checked Locking 模式都用以確保一個特定的類只有一個對象被(實例 化)。1. Singleton (單件)模式: 保證一個類僅有一個 實例,并提供一個訪問它的全局訪問點。2. Double-Checked Locking 模式:

32、 是 singleton 的多線 程版本。1. Singleton (單件)模式怎樣工作?Singleton (單件)模式的工作方式是:擁有一個 特定的方法,這個方法被用于實例化需要的對象。當 這個方法被調(diào)用時,它檢查這個對象是否已經(jīng)被實例 化。如果對象已經(jīng)被實例化,這個方法僅僅返回這個 對象的一個引用。如果對象尚未實例化,這個方法將 對象實例化并返回這個新的實例的引用。為了確保這 是創(chuàng)建這個類型的對象的惟一途徑,在這個類中將構 造函數(shù)定義為 protected或private。2. Singleton (單件)模式和 Double-Checked Locking模 式之間有什么區(qū)別?Sing

33、leton (單件)模式用于單線程應用程序,而 Double-Checked Locking模式用于多線程應用程序。3. 描述Singleton (單件)模式意圖以及效果?Singleton (單件)模式的意圖是你希望只擁有一 個對象,但不用全局對象來控制對象的實例化 。效果 是客戶對象不需要關心是否已經(jīng)有 Singleton的實例存 在。這可以在 Singleton內(nèi)部得到控制。4. Singleton (單件)模式的用途是什么?它讓我們可以僅僅對對象進行一次實例化,而不 要求客戶對象關心這個對象是否存在。1.在一個多線程應用程序中,如果使用Singleton 模式,試分析可能會出現(xiàn)哪些問題

34、。出現(xiàn)A進程和B進程同時訪問某個對象的時候, 發(fā)現(xiàn)它沒有實例化過,結果A、B進程分別將該類實例化一次,出現(xiàn)冗余對象的情況。這個情況并不多見, 但是C+ +中出現(xiàn)了就是內(nèi)存泄露的重大問題。第17章Observer(觀察者)模式1.在觀察者模式中,表述錯誤的是(觀察者可以改變被觀察者的狀態(tài),再由被觀察者通知所有觀察者依據(jù) 被觀察者的狀態(tài)進行。)。5. Observer模式不適用于(一個對象結構包含很多類 對象,它們有不同的接口,而想對這些對象實施一些 依賴于其具體類的操作。)。9. 對觀察者模式,以下敘述 不正確的是(必須找出所 有希望獲得通知的對象 )。10. 對于觀察者模式,以下敘述正確的是(

35、如果對象之間的以來關系是固定的,采用觀察者模式會帶來負 面影響)。2. 觀察者模式定義了一種(一對多)的依賴關系,讓多個觀察者對象同時監(jiān)聽某一個主題對象。4. 當依賴關系固定(或幾乎固定)時,加入一個 Observer模式可能只會增加(復雜性)。5. 為了對所有Observer類型的對象實現(xiàn)Observer 接口,有時候需要使用(Adapter)模式。6. 如果系統(tǒng)在不同的情況下運行,或由不同的用戶運行,觀察者列表會不同,這時適宜用(Observer) 模式。7. 一個觀察者可能只需要處理事件的某些情況,在這種情況下,觀察者必須將額外的(通知)篩選掉。8. 對觀察者模式,觀察者通常將觀察某個事

36、件的 責任交給(中心對象或 Subject)。9. Subject類將實現(xiàn)一個(notify)方法來遍歷其Observer對象列表,并調(diào)用每個Observer對象的update 方法。10. 當Subject對象有了已注冊的 Observer對象, 事件發(fā)生時,Subject對象通知 Observer對象將非常簡 單。為此,每個Observer對象都要實現(xiàn)一個 (update) 方法。1. GOF設計模式按照模式的目的可分為哪三類?其目 的分別是什么?結構型:將現(xiàn)存的對象結合在一起。行為型:提 供一種顯得靈活(變化)行為。創(chuàng)建型:穿件或實例 化對象。2. Observer模式的定義,它要解決什

37、么樣的問題?Observer (觀察者)模式定義對象間的一種一對多的依賴關系,當一個對象的狀態(tài)發(fā)生改變時,所有 依賴于它的對象都得到通知并被自動更新。解決的問 題是當某個事件發(fā)生時,你需要向一系列對象發(fā)出通 知,而這個對象的列表是不斷變化的。3. Observer (觀察者)模式的效果。效果是如果某些 Observer只對全部事件的一個子 集感興趣,那么 Subject可能會告訴 Observer它們不 需要知道的事件。如果在Subject通知Observer之后, Observer又轉過來請求附加信息,就可能需要額外的 通信。4. Observer (觀察者)模式如何實現(xiàn)解決方案的?讓“希望

38、知道某個事件何時發(fā)生”的對象 (Observer)將自己注冊到另一個“監(jiān)視事件發(fā)生或 自己觸發(fā)事件”的對象(Subject)上。當事件發(fā)生時, Subject告訴 Observer “你關心的事情 已經(jīng)發(fā)生了。 為了能讓所有的觀察者型對象實現(xiàn)Observer接口,有時候需要使用Adapter模式。1. 給出Observer的定義以及它的意圖,舉一個例子說明該模式的適用場景,最后畫出它的類圖。定義對象間的一種一對多的依賴關系,當一個對 象的狀態(tài)發(fā)生改變時,所有依賴于它的對象都得到通 知并被自動更新。解決的問題是當某個事件發(fā)生時, 你需要向一系列對象發(fā)出通知,而這個對象的列表是 不斷變化的。例如,

39、在Subject對象注冊了它的一個Observer對象,當事件發(fā)生時,Subject對象向Observer 對象發(fā)出通知就非常簡單了。為了實現(xiàn)這一功能,每 個Observer類都實現(xiàn)一個叫做 updata的方法。Subject 類這樣實現(xiàn)notify方法:遍歷自己的 Observer對象列 表,調(diào)用其中每個 Observer對象的updata方法。Updata 方法應該包含處理事件的代碼。2. 根據(jù)你的理解,請你談談結構型和行為型模式 的區(qū)別,并結合實際的應用舉例說明。結構型模式的目的是將現(xiàn)存的對象結合在一起, 用途是處理接口,將實現(xiàn)與抽象類聯(lián)系起來。而行為 型模式的目的是提供一種顯得靈活的行

40、為,用途是包 容變化的。例子:結構型模式中的Bridge模式或Decorator模式與行為型模式中的Strategy模式的比較。第18章Template Method(模板方法)模式2. 模板方法的作用是(在方法中定義算法的框架,而 將算法中的一些操作步驟延遲到子類中實現(xiàn))。4. 有關模板方法模式,以下敘述不正確的是(將定義和操作相互分離)。5. 在采用模板方法模式對系統(tǒng)連接不同數(shù)據(jù)庫(例如Oracle和SQL Server)的連接時,以下敘述 不正確的是(可以采用通用的實現(xiàn)方法建立對不同數(shù)據(jù)庫的連接)。1. Template Method模式準備一個抽象類,將部分邏輯以(具體方法)以及具體構

41、造子類的形式實現(xiàn), 然后聲明一些抽象方法來迫使子類實現(xiàn)剩余的邏輯。2. Template Method (模版)模式是用以幫助從不同的步驟中抽象出一個(通過的)過程模式。3. Template Method (模版)模式讓我們可以在抽象類中捕捉共同點而在( 派生類)中封裝不同點。4. 當遇到一個心得數(shù)據(jù)庫時,Template Method(模版)模式提供了一個(樣板)讓我們填充。我們創(chuàng)建一個新的派生類,并根據(jù)新的數(shù)據(jù)庫的要求實現(xiàn) 特定的步驟。5. Template Method (模版)模式使得子類可以不 改變一個算法的結構即可( 重定義)該算法的某些特 定步驟。1. Template Met

42、hod (模版)模式定義一個操作中的算法的骨架,而將一些步驟延 遲到子類中。Template Method使得子類可以不改變一 個算法的結構即可重定義該算法的某些特定步驟。1. Template Method模式以怎樣的一種特殊的方式進 行方法調(diào)用?Template Method (模版)模式可以這樣做,因為 對方法的調(diào)用是通過一個引用來進行的,而這個引用 指向的對象屬于某一個派生類。2. Template Method (模版)模式如何定義,其效果是 什么?定義一個操作中的骨架,而將一些步驟延遲到子類中。Template Method模式使得子類可以不改變一個 算法的結構即可重定義該算法的某

43、些特定步驟。效果:模版為代碼復用提供了一個優(yōu)秀的平臺。它們還有助 于確保需要的步驟得到實現(xiàn)。它們?yōu)槊總€具體類將重 載后的步驟捆綁在一起,因此只有在這些重載方法總 是并且只能一起發(fā)生時,才應該使用Template Method (模版)模式。3. Template Method (模版)模式需要解決的問題是什 么?解決方案是什么?需要遵循一個過程或一系列步驟,它們在某個具體層次上保持一致,但單個步驟在更詳細的層次上可 能有不同的實現(xiàn)。解決方案:允許定義不同的子步驟, 同時維護基本過程的一致性。4. 按照四人團的說法, Template Method模式的基本 思想是什么?定義一個操作中的算法的骨

44、架,而將一些步驟延 遲到子類中。Template Method模式使得子類可以不改 變一個算法的結構即可重定義該算法的某些特定步驟。Template Method模式給了我們一條途徑,讓我們可以 在抽象類中捕捉共同點而在派生類中封裝不同點。第19章Factory Method(工廠方法)模式1.下列關于靜態(tài)工廠與工廠方法表述錯誤的是:()A. 兩者都滿足開閉原則:靜態(tài)工廠以if else方式創(chuàng)建對象,增加需求的時候會修改源代碼。B. 靜態(tài)工廠對具體產(chǎn)品的創(chuàng)建類別和創(chuàng)建時機的判斷是混和在一起的,這點在工廠方法是分開的。C不能形成靜態(tài)工廠的繼承結構。D. 在工廠方法模式中,對于存在繼承等級結構的 產(chǎn)品樹,

溫馨提示

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

評論

0/150

提交評論