設計模式 考試題+答案

一、選擇題

 

1.( A )模式的關鍵是將一個對象定義爲原型,併爲其提供複製自己的方法。

    A.原型   B.創建者    C.工廠方法     D.迭代

2.下面的類圖表示的是哪個設計模式?(B )  

   A裝飾模式(Decorator)     B策略模式(Strategy)

   C橋接模式(Bridge)        D觀察者模式(Observer)

uploading.4e448015.gif轉存失敗重新上傳取消

 3.Strategy(策略)模式的意圖是:(A)。  

  A.定義一系列的算法,把它們一個個的封裝起來,並且使它們可相互替換。

  B.爲一個對象動態連接附加的職責。

  C.你希望只擁有一個對象,但不用全局對象來控制對象的實例化。

  D.在對象之間定義一種一對多的依賴關係,這樣當一個對象的狀態改變時,所有依賴於它的對象都將得到通知並自動更新。  

4.下面不屬於創建型模式的有( C )。

  A.抽象工廠模式( Abstract Factory )       B.工廠方法模式(Factory Method)

  C.適配器模式 (Adapter)                 D.單例模式(Singleton)

5.將一個類的接口轉換成客戶希望的另一個接口。這句話是對下列哪種模式的描述(C )。

  A.策略模式(Strategies)   B.橋接模式(Bridge)  

  C.適配器模式(Adapter)   D.單例模式(Singleton)

6.下面的類圖表示的是哪個設計模式?( A )。

  A裝飾模式(Decorator)     B適配器模式(Adapter)

  C策略模式(Strategies)    D橋接模式(Bridge)

uploading.4e448015.gif轉存失敗重新上傳取消

7.下面屬於結構模式的有(D  )。  

  A.策略模式(Strategies)             B.單例模式(Singleton)

  C.抽象工廠模式(Abstract Factory)   D.裝飾模式(Decorator

8.下圖可以使用( A )模式進行設計。

uploading.4e448015.gif轉存失敗重新上傳取消

 

 

 

 

 

 

 

      A.組合   B.模板    C.責任鏈     D.狀態

9.(  B  )將抽象部分與它的實現部分分離,使它們都可以獨立地變化。

     A.組合   B.橋接    C.責任鏈     D.狀態

10.下圖是關於房間狀態的描述,可以使用( D  )模式進行設計。

uploading.4e448015.gif轉存失敗重新上傳取消

 

 

 

 

 

 

 

   A.組合   B.橋接    C.責任鏈     D.狀態

 

11.設計模式具有的優點(A )。

 A.適應需求變化     B.程序易於理解 

 C.減少開發過程中的代碼開發工作量    D.簡化軟件系統的設計

12. 設計模式一般用來解決什麼樣的問題( A)。

 A.同一問題的不同表相  B不同問題的同一表相

  C.不同問題的不同表相     D.以上都不是

13. 設計模式的兩大主題是(  D )。

     A.系統的維護與開發    B.對象組合與類的繼承

     C.系統架構與系統開發  D.系統複用與系統擴展

14.以下哪些問題通過應用設計模式不能夠解決(C)

 A)指定對象的接口     B)針對接口編程

 C)確定軟件的功能都正確實現  D)設計應支持變化

15.打印池在操作系統中是一個用於管理打印任務的應用程序,通過打印池用戶可以刪除、中止或者改變打印任務的優先級。我們可以使用( D )來模擬實現打印池的設計。

       A.命令模式   B.橋接    C.責任鏈     D. 單例模式

 

16.在現實生活中,居民身份證號碼具有唯一性,居民可以申請身份證號碼或補辦身份證號碼(還是使用原來的身份證號碼,不會產生新的號碼)。我們可以使用( C )來模擬實現居民身份證號碼辦理。

       A.命令模式   B.橋接    C.單例模式     D. 責任鏈

17.在銀行辦理業務時,一般都包含幾個基本步驟,即取號排隊、辦理具體業務和對銀行工作人員進行評分。無論具體業務是取款、存款還是轉賬,其基本流程都一樣。可以使用(  C )模擬銀行業務辦理流程。

     A.工廠方法模式   B.訪問者模式    C.模板方法模式     D.責任鏈

18.對數據庫的操作一般包括連接、打開、使用、關閉等步驟,對於不同類型的數據庫,其操作步驟都一致,只是連接數據庫方法有所區別,可以使用(  C )對其進行設計。

     A.工廠方法模式   B.訪問者模式    C.模板方法模式     D.責任鏈

19.論壇權限控制設計:在一個論壇中已註冊用戶和遊客的權限不同,已註冊的用戶擁有發帖、修改自己的註冊信息、修改自己的帖子等功能;而遊客只能看到別人發的帖子,沒有其他權限。使用(  B  )來設計該權限管理模塊。

     A.工廠方法模式   B.代理模式    C.享元模式     D.外觀模式

20.在模擬毛筆的使用過程中提供了大中小3種型號的畫筆,夠繪製5種不同顏色。我們可以使用( B )來模擬實現模擬毛筆的使用。

       A.命令模式   B.橋接    C.單例模式     D. 責任鏈

21.共享網絡設備模擬:很多網絡設備都是支持共享的,如交換機、集線器等,多臺終端計算機可以連接同一臺網絡設備,並通過該網絡設備進行數據轉發。共享網絡設備可以使用( C)模擬共享網絡設備的設計原理。

     A.工廠方法模式   B.代理模式    C.享元模式     D.外觀模式

22.購物車設計:顧客在超市中將選擇的商品,如蘋果、圖書等放在購物車中,然後到收銀員處付款。在購物過程中,顧客需要對這些商品進行訪問,以便確認這些商品的質量,之後收銀員計算價格時也需要訪問購物車內顧客所選擇的商品。購物車設計可以使用(B)來設計該購物過程。

     A.工廠方法模式   B.訪問者模式    C.模板方法模式     D.責任鏈

23.某高校獎勵審批系統可以實現教師獎勵和學生獎勵的審批(AwardCheck),如果教師發表論文數超過10篇或者學生論文超過2篇可以評選科研獎,如果教師教學反饋分大於等於90分或者學生平均成績大於等於90分可以評選成績優秀獎。獎勵審批系統可以使用( B )設計該系統,以判斷候選人集合中的教師或學生是否符合某種獲獎要求。

     A.工廠方法模式   B.訪問者模式    C.模板方法模式     D.責任鏈

24.現在大多數軟件都有撤銷(Undo)的功能,快捷鍵一般都是Ctrl+Z。這些軟件可能使用了( A  )模式來進行。

     A.備忘錄模式   B.訪問者模式    C.模板方法模式     D.責任鏈

25.某系統提供了用戶信息操作模塊,用戶可以修改自己的各項信息。爲了使操作過程更加人性化,可以使用(   B )對系統進行改進,使得用戶在進行了錯誤操作之後可以恢復到操作之前的狀態。

     A.責任鏈   B. 備忘錄模式   C.模板方法模式     D.訪問者模式

26.假設貓是老鼠和狗的觀察目標,老鼠和狗是觀察者,貓叫老鼠跑,狗也跟着叫,可以使用(  B )描述該過程。

       A.命令模式   B.觀察者模式    C.責任鏈     D. 單例模式

27.通過電視機遙控器可以實現對電視機頻道進行選擇,其實選擇電視機頻道就是對存放頻道的集合進行遍歷操作。所以可以使用(  C   )模擬電視機遙控器的實現。

       A.命令模式   B.觀察者模式    C.迭代器模式     D. 單例模式

28.假設一個電源總開關可以控制四盞燈、一個風扇、一臺空調和一臺電視機的啓動和關閉。通過該電源總開關可以同時控制上述所有電器設備,可以使用(  A ) 來模擬設計該系統。

       A.外觀模式   B.觀察者模式    C.迭代器模式     D. 單例模式

29.KFC套餐一般包含主食(如漢堡、雞肉卷等)和飲料(如果汁、可樂等)等組成部分,不同的套餐有不同的組成部分,而KFC的服務員可以根據顧客的要求,一步一步裝配這些組成部分,構造一份完整的套餐,然後返回給顧客。可以使用(D  )描述KFC如何創建套餐。

       A.外觀模式   B.觀察者模式    C.迭代器模式     D. 建造者模式

30.某OA系統需要提供一個假條審批的模塊,如果員工請假天數小於3天,主任可以審批該假條;如果員工請假天數大於等於3天,小於10天,經理可以審批;如果員工請假天數大於等於10天,小於30天,總經理可以審批;如果超過30天,總經理也不能審批,提示相應的拒絕信息。如果假條審批使用模式來進行設計,可以使用( A  )模式。

     A.責任鏈   B. 備忘錄模式   C.模板方法模式     D.訪問者模式

31.以下關於創建型模式說法正確的是(A)

A. 創建型模式關注的是對象創建   B. 創建型模式關注的是功能的實現   C.創建型模式關注的是組織類和對象的常用方法   D.創建型模式關注的是對象間的協作。

 

32.下列關於簡單工廠模式與工廠方法模式表述錯誤的是(A)

A. 兩者都 滿足開閉原則:簡單工廠以if else 方式創建對象,增加需求看看 時候會修改源代碼   B. 簡單工廠對具體產品的創建類別和創建時機的判斷是混合在一起的,這點在工廠方法模式中已經克服   C.不能形成簡單工廠的繼承結構   D.在工廠方法模式中,對於存在繼承等級結構的產品樹,產品的創建是通過相應等級結構的工廠創建的。

33.簡單工廠模式的核心是(C)

 

A.抽象產品   B.具體產品    C.簡單工廠   D.消費者

34.工廠方法模式的核心是(A)

A.一個抽象工廠    B.一個具體工廠    C.一個接口   D.沒有核心

 

35.在設計中如果一個對象請求另一個對象調用其方法到達某種目的,而不和請求的對象直接打交道,這種模式是( B  )。

    A.觀察者模式  B.命令模式 C. 策略模式 D.責任鏈模式

36.(  A )關於多個對象想知道一個對象中數據變化情況的一種成熟的模式。

    A.觀察者模式  B.命令模式 C. 策略模式 D.責任鏈模式

37.Open-Close原則的含義是一個軟件實體( a )
  A.應當對擴展開放,對修改關閉.   B.應當對修改開放,對擴展關閉
  C.應當對繼承開放,對修改關閉   D.以上都不對
38.下列模式中,屬於行爲模式的是( B )
  A.工廠模式   B觀察者   C適配器    D.以上都是
39.下列圖1可對應(  D  )模式來進行設計。

 

             uploading.4e448015.gif轉存失敗重新上傳取消

                              圖1

  A.抽象工廠   B觀察者   C適配器    D.裝飾
40.如下列圖2所示,在設計模式中,這種設計可採用(    B   )。

 

     uploading.4e448015.gif轉存失敗重新上傳取消

                   圖2

  A.命令模式   B策略模式   C.外觀模式    D.迭代器模式
41.策略模式的結構中包括三種角色上下文、具體策略和抽象策略。抽象策略角色是一個(  C )。

  A.類   B抽象類   C.接口    D.子類

42.用戶已經有睛個兩相插座,最的又買了一個三相插座。現在用戶想使用新的三相插座來使用三相的洗衣機和二相插座的電視機,這種問題可以使用(  B  )模式來進行設計。

  A.命令模式   B適配器模式   C.外觀模式    D.迭代器模式
43.如下列圖3所示,在設計模式中,這種設計可採用(    A   )。

 

uploading.4e448015.gif轉存失敗重新上傳取消

圖3
  A.命令模式   B策略模式   C.外觀模式    D.迭代器模式
44.如下列圖4所示,在設計模式中,這種設計可採用(    C   )。

 

uploading.4e448015.gif轉存失敗重新上傳取消

圖4

  1. 命令模式   B策略模式   C.適配器模式    D.組合模式

 

 

45.如下列圖5所示,在設計模式中,這種設計可採用(    A   )。

 

uploading.4e448015.gif轉存失敗重新上傳取消

圖5

A.職責鏈模式   B策略模式   C.適配器模式    D.組合模式

 

46.如下列圖6所示,在設計模式中,這種設計可採用(    B   )。

 

uploading.4e448015.gif轉存失敗重新上傳取消

圖6

A.職責鏈模式   B原型模式   C.適配器模式    D.組合模式

 

47.如下列圖7所示,在設計模式中,這種設計可採用(    A  )。

 

uploading.4e448015.gif轉存失敗重新上傳取消

圖7

A.工廠方法模式   B原型模式   C.適配器模式    D.組合模式

 

48.如下列圖8所示,在設計模式中,這種設計可採用(    B  )。

 

uploading.4e448015.gif轉存失敗重新上傳取消

圖8

A.工廠方法模式   B抽象工廠模式   C.適配器模式    D.組合模式

49.如下列圖9所示,在設計模式中,這種設計可採用(  A )。

uploading.4e448015.gif轉存失敗重新上傳取消

 

圖9

A.建造者模式  B抽象工廠模式   C.適配器模式   D.組合模式

50.如下列圖10所示,在設計模式中,這種設計可採用( B )。

uploading.4e448015.gif轉存失敗重新上傳取消

圖10

A.建造者模式   B單例模式   C.適配器模式    D.組合模式

51.如下列圖11所示,在設計模式中,這種設計可採用( C )。

uploading.4e448015.gif轉存失敗重新上傳取消

圖11

A.建造者模式   B單例模式   C.代理模式    D.組合模式

52.如下列圖12所示,在設計模式中,這種設計可採用( B )。

 

uploading.4e448015.gif轉存失敗重新上傳取消

 

 

 

 

 

 

 

圖12
A.建造者模式   B觀察者模式   C.代理模式    D.組合模式

53.下列模式中,屬於行爲模式的是( B )。

A.工廠模式   B.觀察者模式   C.適配器模式   D.以上都 是

 

54.行爲類模式使用( B )在類間分派行爲。

A.接口  B.繼承機制   C.對象組合   D.委託

55.原型模式本質上就是對象的(B )。

A.引用  B.複製   C.串行化    D.序列化

56.以下哪個模式可以利用一個對象,快速地生成一批對象? ( C )

A.抽象工廠模式  B.單例模式  C原型模式.   D.簡單工廠模式

二、填空題

1.Strategy意圖是定義一系列的算法,把它們一個個(封裝)起來, 並且使它們可相互替換。

2.(Strategy模式)模式是一種定義一系列算法的方法。

3.Adapter模式有兩種類型有:對象Adapter模式、(類Adapter模式)。

4.(Adapter適配器)模式使原本接口不兼容而不能一起工作的類可以一起工作。

5.組合模式對單個對象(即葉子對象)和組合對象(即容器對象)的使用具有一致性。

6.橋接模式包括抽象類、擴充抽象類、實現類接口和(具體實現類 )四個角色。

7.狀態模式的關鍵是引入了一個(抽象類)來專門表示對象的狀態,這個類我們叫做抽象狀態類,

8.享元模式的核心在於(享元工廠類)。

9.包括原發器、備忘錄和負責人三個角色的模式是(備忘錄模式)

10.(解釋器)模式描述瞭如何爲簡單的語言定義一個文法,如何在該語言中表示一個句子,以及如何解釋這些句子。

11.GOF總結出了(23)個模式。

12.GOF根據模式的目標將模式分爲三個類目:創建型、(行爲型)和結構型。

13.GOF總結出23個設計模式,其中有(7)個模式是結構型模式。

14.開閉原則中(抽象化 )是開閉原則的關鍵。

15.合成複用原則是指儘量使用對象組合,而不是( 繼承  )來達到複用的目的。

16.面向對象的設計模式的原則是指“開-閉”原則、里氏代換原則和( 合成複用原則 )。

18.根據範圍即模式主要是用於處理類之間關係還是處理對象之間的關係,可分爲(類模式)和(對象模式)兩種。

19.對象模式處理對象間的關係,這些關係在運行時刻變化,更具動態性。

20.類模式處理類和子類之間的關係,這些關係通過繼承建立,在編譯時刻就被確定下來,是屬於靜態的。

21.()模式提供了管理相關的算法族的辦法。策略

22.策略模式還簡化了單元測試,因爲第個算法都有自己的類,可以通過自己的()單獨測試。  接口

23.策略模式將算法的選擇和算法的()相分離。 實現

24.()模式使多個對象都有機會處理請求,從而避免請求的發送者和接收者之間的耦合關係。  責任鏈

25.行爲模式是對在不同的對象之間劃分()和()抽象化。  責任  算法

26.中介者模式又被稱爲()模式。  調停者

27.中介者模式是一種()模式。  對象行爲

28.組合模式有時又稱爲()模式。  部分-整體

29.軟件模式的基本結構由4個部分組成,即問題描述、前提條件、( )和效果。 解法

30.設計模式一般包含模式名稱、問題、目的、解決方案、效果、實例代碼和()。相關設計模式

31.設計模式根據設計目的分爲創建型模式、結構型模式和()。 行爲型模式

33.GOF設計模式總共提供了()種設計模式。  23

34.單一職責原則用於控制類的()大小。  粒度

35.開閉原則是指軟件實體應當對()開放,對修改關閉。 擴展

36.()模式讓一個類的實例化延遲到其子類。工廠方法

37.抽象工廠模式是一種()創建型模式。 對象

38.()模式提供一個創建一系列相關或相互依賴對象的接口,而無須指定它們具體的類。 抽象工廠

39.原型模式的結構中包含抽象原型類和()。具體原型類

40.確保一個類只有一個實例,並提供一個全局訪問點來訪問這個唯一實例的設計模式是()模式。  單例

41.裝飾模式是屬性於()模式。   結構型

42.將抽象部分和它的實現部分解耦,使得兩者都能夠獨立變化的設計模式是()模式。橋接

43.()模式讓客戶端可以統一對待單個對象和組合對象。  組合

44.組合模式根據抽象構件類的定義形式可以分爲透明組合模式和()組合模式。 安全

45.()模式可以動態地給一個對象增加一些額外的職責。  裝飾

46.裝飾模式又分透明裝飾模式和()裝飾模式。半透明

47.享元模式是運用()技術有效地支持大量細粒度對象的複用。 共享

 

三、判斷題

1. Strategy模式使得算法可獨立於使用它的客戶而變化。對

2. 從Strategy模式的概念上來說,所有算法都做相同的工作,且擁有相同的實現。錯

3.對象適配器模式是合成聚合複用原則的典型應用。對

4.Adapter模式使原本由於接口不兼容而不能一起工作的那些類可以一起工作。對

每個Decorator對象在被裝飾的功能之前或之後執行自己的附加功能。對

6. Decorator(裝飾)模式適用性是表示對象的部分-整體層次結構。錯

7.組合模式又可以稱爲“整體-部分”(Part-Whole)模式 (對)

8.橋接模式是一種對象結構型模式。(對)

9.狀態模式是一種對象行爲型模式。(對)

10.模板方法模式是一種類行爲型模式。(對)

11.訪問者模式是一種對象行爲型模式。(對)

12.單例模式是屬於創建型模式。(錯)

13.行爲模式涉及怎樣合理地設計對象之間的交互通信,以及怎樣合理爲對象分配職責。(對)

14.單一職責原則是指一個對象應該只包含單一的職責,並且該職責被完整地封裝在一個類中。(對)

15.開閉原則是指一個軟件實體應當對擴展開放,對修改關閉。(對)

16.在面向對象設計中,可以通過兩種基本方法在不同的環境中複用已有的設計和實現,即通過組合/聚合關係或通過繼承。(對)

17.單一職責原則要求在軟件系統中,一個類只負責一個功能領域中的相應職責。(對)

18.創建型模式主要用於創建對象。(對)

19. 結構型模式主要用於處理類或對象的組合。(對)

21.策略模式使得算法可獨立於使用它的客戶而變化。

22.從策略模式的概念上來說,所有算法都做相同的工作,且擁有相同的實現。X

23.策略模式可以用不同的方式調用所有的算法。X

24.在算法設計時,採用策略模式可能會增加大量的類。

25.策略模式是一種對象行爲模型式。

26.中介者模式是一種對象行爲型模式。

27.中介者模式設計符合單一職責原則。

28.中介者模式中的中介其實僅提供一個交互的平臺,具體的交互還是對象之間來完成的。

29.QQ一對聊天可以看作中介者模式的一個示例。X

30.中介者模式定義對象間的一種一對多依賴關係,使得每當一個對象狀態發生改變時,其31.相關依賴對象皆得到通知並被 自動更新。X

32.在中介者模式中,”中介”承擔了較多的責任,所以一旦這個中介對象出現了問題,那麼整個系統就會受到重大影響。

33.抽象工廠模式隔離了具體類的生產,使得客戶並不需要知道什麼被創建。

34.抽象工廠模式針對的是一個產品等級結構、一個抽象產品類。X

35.可以這樣理解“抽象工廠”模式:抽象來自抽象產品角色,而抽象工廠就是抽象產品角色的工廠。

36.抽象工廠模式提供了一系列相關或相互依賴對象的接口且必須指定其具體的類。X

37.抽象工廠模式確保系統總能根據當前的情況獲得合適的對象。

38.工廠方法模式關注對象的實例化過程,所以是一種行爲模式。X

39.工廠方法模式只有一個抽象產品類。

40.工廠方法模式的具體工廠類可以創建多個具體產品類的實現。X

41.簡單工廠模式完全符合“開閉原則”。X

42.簡單工廠模式屬於創建型模式,但不屬於23種GOF設計模式之一。

43.建造者模式中,每一個builder都相對獨立,而與其他的builder無關。

44.在建造者模式中,指揮者的角色可有可無。X

45.建造者模式屬於對象創建型模式。

46.建造者模式和工廠模式一樣,關注的都是如何創建單個產品。X

47.建造者模式要求構建產品的步驟是不能劇烈變化的,最好是不變的,這樣就影響了靈活度。

48.單例模式和原型模式是衝突的。

49.與工廠方法模式一樣,原型模式也需要專門的工廠類來創建產品。X

50.對任何的對象x,都有x.clone()!=x,即克隆對象與原對象不是同一個對象。

51.對任何的對象x,都有x.clone().getClass()==x.getClass(),即克隆對象與原對象的類型一樣。

52.如果對象x的equals()方法定義恰當,那麼x.clone().equals(x)應該成立。

53.單例模式適用於當類只能有一個實例,而且客戶可以從一個公共的訪問點訪問它。

54.單例模式屬於結構型模式。X

55.在併發的情況下,懶漢式單例模式是不安全的。

56.可以把餓漢式單例模式看成是預加載,懶漢式單例模式則爲延遲加載。

57.我們可以將一個方法標記爲synchronized,這樣多個線程變可以同時操作該方法了。X

58.適配器模式屬於創建型模式。X

59.適配器模式的用意是改變對象的接口而不一定改變對象的性能,而裝飾模式的用意是保持接口並增加對象的職責。

60.一個對象適配器可以將多個不同的適配者適配到同一個目標。

61.適配器模式也是一種包裝模式,瑟裝飾者模式同樣具有包裝的功能。

62.在系統併發的詳細設計階段最適合使用適配器模式。X

63.在橋接模式中的橋接是單向的,也就是隻能是抽象部分的對象雲使用具體實現部分的對象,而不能反過來,也就是個單向橋。

64.橋接模式爲系統提供了一種高內聚、低耦合的解決方案。

65.當需要增加系統的功能時,應當採用橋接模式。X

66.封裝就是指數據隱藏。X

67.正確識別出系統中兩個獨立變化的維度並不是一件容易的事情。

68.組合模式解耦了客戶程序與複雜元素內部結構,從而使客戶程序可以像處理簡單元素來處理複雜元素。

69.使用組合模式,如果加入了新的對象部件,則必須更改客戶端的代碼。X

70.組合模式爲區別地對待整體和部分提供了十分有移交的解決方案。X

71.組合模式是一種類的結構型模式。X

72.Java SE中的AWT和Swing包的設計可以看作是基於組合模式的。

73.裝飾者模式中非常重要的一點就是具體組件和裝飾類都是“抽象組件”的子類。

74.裝飾者模式會導致設計中出現許多小類,因此不要過度使用。

75.繼承是動態的,在系統編譯時就已經決定了對象的行爲。X

76.讓用戶的代碼和某個特定類的子類的代碼解耦,這就是裝飾者模式的意圖。X

77.用裝飾者實例化組件時,將增加代碼的複雜度,一旦應用了裝飾者模式,不只需要實例化組件,還要把組件包裝進裝飾者,而這樣的裝飾者有多少個是不確定的。

78.享元模式的特點是:複用內存中已存在的對象,降低系統創建對象實例的性能和消耗。

79.享元模式一般是給出本地內存資源節省的一個方案,並適應互聯網上的分佈式應用的情況。

80.在享元模式中,共享的享元對象越多,對存儲空間的佔用就越大。X

81.在享元模式中,只有完全相同的事物纔可以共享。X

82.複合享元對象的狀態是會改變的,因此複合享元對象是不能共享的。

83.代理模式是一種行爲型設計模式。X

84.由於在客戶端和真實主題之間增加了代理對象,因此有些類型的代理模式可能會造成請求的處理速度變慢。

85.從現實上來說,代理模式主要實現了對象的繼承。X

86.人們對於複雜的軟件系統常常有一種處理手法,即增加一層間接層,從而對系統獲得一種更爲靈活、滿足特定需求的解決方案。

87.適配器模式是解決現有對象在新的環境中的不足,而代理模式是解決直接訪問對象時出現的問題。

88.責任鏈模式並不創建出責任鏈。責任鏈的創建必須由系統的其他部分創建出來。

89.在責任鏈模式中,所有的請求都保證能被處理。X

90.在責任鏈模式中,客戶類只需要關心鏈的源頭,而無須關心請求的處理細節以及請求的傳遞過程。

91.責任鏈模式的重點在“鏈”上,由一條鏈去處理相似的請求,在鏈中決定由誰去處理這個請求,並返回相應的結果。

92.責任鏈模式是一種結構型的設計模式。X

93.使用命令模式增加新的命令時,不需要修改已有的代碼。

94.使用命令模式可能導致系統有過多的命令類以及複雜的關聯關係。

95.命令模式遵循了針對實現編程這一原則。X

96.在基於GUI的軟件開發,無論是在計算機桌面應用還是在移動應用中,命令模式都得到廣泛的應用。

97.命令模式強化了發送者與接收者之間的直接引用關係。X

98.里氏替換原則指的是父類型和子類型之間可以相互替換。X

99.依賴於抽象,就是依賴於細節並對實現編輯。X

100.對修改關閉對擴展開放使得軟件無法修改,難以維護。X

101.單一職責原則 是指一個類應該僅有一個引起它變化的原有。

102.接口隔離原則指的是客戶端應該依賴它需要和不需要的接口。X

 

  • 模式設計題(本大題共1小題,共計30分)

1.排序策略問題。某系統提供了一個用於對數組數據進行操作的類,該類封裝了對數組的常見操作,如查找數組元素、對數組元素進行排序等。現以排序操作爲例,使用策略模式設計該數組操作類,使得客戶端可以動態地更換排序算法,可以根據需要選擇冒泡排序或選擇排序或插入排序,也能夠靈活地增加新的排序算法。

 

2.有一電視機工廠,生產各種電視機。現要將原有的工廠進行分割,爲每種品牌的電視機提供一個子工廠,海爾工廠專門負責生產海爾電視機,海信工廠專門負責生產海信電視機;如果需要生產其他某個品牌電視機,只需要對應增加一個新的該品牌電視機工廠即可,而原有的工廠無須做任何修改,使得整個系統具有更加的靈活性和可擴展性。請使用工廠方法模式設計電視機工廠,要求畫出模式結構和代碼設計。 

3.windows回收站的創建模擬   在整個視窗系統中,回收站只能有一個實例,整個系統都使用這個唯一的實例,不管如何雙擊“回收站”圖標,打開的回收站窗口始終是唯一的一個。請使用單例模式模擬windows回收站的創建。畫出UML圖、指出模式角色對應的類及java代碼實現

參考答案:

  1. UML圖

 

 

RecycleBin

-instance:RecycleBin=null

-RecycleBin()

+getInstance():RecycleBin

#celarbin():void

 

Client

uploading.4e448015.gif轉存失敗重新上傳取消

 

 

 

 

4.KFC套餐

建造者模式可以用於描述KFC如何創建套餐:套餐是一個複雜對象,它一般包含主食(如漢堡、雞肉卷等)和飲料(如果汁、可樂等)等組成部分,不同的套餐有不同的組成部分,而KFC的服務員可以根據顧客的要求,一步一步裝配這些組成部分,構造一份完整的套餐,然後返回給顧客。畫出UML圖、指出各角色及對應的類,並使用java代碼編寫模擬程序。

 

.UML圖

uploading.4e448015.gif轉存失敗重新上傳取消

 

5.現需要設計一個可以模擬各種動物行爲的機器人,在機器人中定義了一系列方法,如機器人叫喊方法cry()、機器人移動方法move()等。如果希望在不修改已有代碼的基礎上使得機器人能夠像狗一樣叫,像狗一樣跑,使用適配器模式進行系統設計。

UML圖:

 

uploading.4e448015.gif轉存失敗重新上傳取消

6.水果盤

在水果盤(Plate)中有一些水果,如蘋果(Apple)、香蕉(Banana)、梨子(Pear),當然大水果盤中還可以有小水果盤,現需要對盤中的水果進行遍歷(吃),當然如果對一個水果盤執行“吃”方法,實際上就是吃其中的水果。使用組合模式模擬該場景。

uploading.4e448015.gif轉存失敗重新上傳取消

7.票務中心代購車票

過年加班比較忙,沒空去買火車票,這時可以打個電話到附近的票務中心,叫他們幫忙買張回家的火車票,當然這會附加額外的勞務費。但要清楚票務中心自己並不賣票,只有火車站才真正賣票,票務中心賣給你的票其實是到火車站買的。請使用代理模式模擬購票過程。

uploading.4e448015.gif轉存失敗重新上傳取消

8.審批假條

某OA系統需要提供一個假條審批的模塊,如果員工請假天數小於3天,主任可以審批該假條;如果員工請假天數大於等於3天,小於10天,經理可以審批;如果員工請假天數大於等於10天,小於30天,總經理可以審批;如果超過30天,總經理也不能審批,提示相應的拒絕信息。

 

uploading.4e448015.gif轉存失敗重新上傳取消

 

9.網站計數器是WEB應用程序的一項基本功能,用於統計使用網站或者應用程序的人數,可反映出網站或者應用程序的受歡迎程序,對於電子商務網站可信度的研究有一定的參考價值。請使用單例模式編寫網站計數器程序。畫出UML圖、java代碼實現。

 

10.現需要設計一個可以模擬各種動物行爲的機器人,在機器人中定義了一系列方法,如機器人叫喊方法cry()、機器人移動方法move()等。如果希望在不修改已有代碼的基礎上使得機器人能夠像狗一樣叫,像狗一樣跑,使用適配器模式進行系統設計。

11.設計一個類,該類創建的對象使用BigInteger對象計算階乘,特點是佔用內存多,但是能計算任意大的整數的階乘,計算速度相對較慢。要求使用責任鏈模式將上面的對象組成一個責任鏈,要求責任鏈上對象的順序是:首先是使用int型數據計算階乘的對象,然後是使用long型數據計算階乘的對象,最後是使用BigInteger對象計算階乘的對象。用戶可以請求責任鏈計算一個整數的階乘。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章