軟件設計模式選擇、判斷解析-1

前言

解析是我個人的理解,相對來說我覺得是能對上定義的邏輯的?

目錄

一.單選題

1.設計模式的兩大主題是(??)?

解析:無

2.下列模式中,屬于行為型模式的是()

解析:?排除A和D,剩下的觀察者的“觀察”才是描述交互行為的

3.以下關于創建型模式說法準確的是( )

解析:?關注功能是行為型模式,組織類和對象是結構型模式,關注對象協作也是行為型模式

4.下列屬于面向對象基本原則的是

?解析:記得區分特性和原則

5.關于單一職責原則,以下敘說錯誤的是(?)?

解析:?單一職責是為了降低類的復雜度,使類的功能更內聚,變更時影響范圍更小;而職責過多的類耦合度高,復用需同時滿足所有職責的需求,場景限制嚴格,復用性更低

6.要依賴于抽象,不要依賴于具體。即針對接口編程,不要針對實現編程,是( )的表述

?解析:開閉和里氏代換不符合表述,而依賴倒轉是指高層模塊不依賴低層模塊,兩者均依賴抽象;接口隔離是指客戶端不依賴不需要的接口,使用多個特定接口替代單一復雜接口

7.()將整個軟件系統劃分為模型、視圖和控制器三個部分。

解析:MVC定義?

8.依據設計模式思想,程序開發中應優先使用的是(? ?)關系實現復用

?解析:對象組合就是指關聯組合,組合優于繼承的原因在于:前者只實現接口,互不影響,而后者繼承父類,父類始終是具體方法的,而這個“具體方法”就是導致耦合度變高的原因。

9.在設計模式的原則中,( )表示使用多個專門的接口比使用單一的總接口要好,一個類對另一個來的依賴性應當是建立在最小的接口上的。

解析:前面剛在解析里面講到的定義

10.以下不屬于結構型模式的是( )

解析:?結構型模式關注處理類或對象的組合

11.當我們想創建一個具體的對象而又不希望指定具體的類時,可以使用( )模式

解析:涉及到創建對象的過程

12.“不要和陌生人說話” 是(? ?)原則的通俗表述

?解析:陌生人就是不相關的,其他原則前面提過了,迪米特原則也叫最少知識原則,指一個對象應盡可能少地了解其他對象,降低耦合度。A選項的接口隔離看起來似乎很像(我一開始也以為是A),但是我后面想了一下,“說話”這個詞還是指交互的,接口不管隔離不隔離都不存在接口間交互。

13.對于依賴倒轉的表述錯誤的是

解析:依賴倒轉的定義我們前面說到了,A是最直接的,B說的語法意義上的接口,這里我想的是因為還有可能是抽象類(不存在任何方法體的抽象類)。而C就是應用了依賴導致后的效果描述

?

14.下面不是MVC優點的是

解析:任何一種模式為了解決問題體現自身的優點都不可避免的要花代價,占用的資源就不可能少,因此,占用資源一定不是MVC的優點

15.下列不是MVC的組成部分的是

解析:V是指視圖view

16.下面不屬于簡單工廠方法模式的角色的是( )。

解析:簡單工廠方法是不存在抽象工廠的

17.下面關于簡單工廠方法的說法中錯誤的是()。

解析:簡單工廠又叫靜態工廠方法,那就自然不能不是靜態

18.簡單工廠模式中的工廠方法的返回值用()的類型是合適的。

解析:工廠生產的成果是產品,要通用,則是抽象產品

19.下面關于靜態工廠方法模式的說法中錯誤的是()。

解析:靜態的代表了唯一,特定的,通常不會派生

20.下面關于工廠方法模式的敘述中錯誤的是()

解析:工廠方法模式是多工廠,一個工廠指定生產一種產品,這是和簡單工廠模式的區別

21.關于工廠方法模式的優缺點說法中正確的是()

解析:每種產品的生產細節分別封裝在每個具體工廠內部,一一對應,抽象工廠不做具體生產,每增加一種產品,則要增加一個工廠,新工廠與舊工廠生產的產品不同,他們之間沒有關聯

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

解析:能夠體現唯一的,那么就是單例模式了;注意原型模式在這個地方是不適用的,畢竟你不能讓來一個人申請身份證就是復制你的(當然其實把場景縮小是可以說D正確的,很多時候還是要關注題目歧義的)

23.在醫院的檔案室存有很多的病例檔案,病人出院的時候,可以去檔案室里面取一份病例復印件,用于商業保險報銷等用途。這個過程可以用( )模式來模擬文印室的檔案管理流程。

解析:這里就是典型的原型模式場景了

24.( )模式是利用一個對象快速的生成一批對象

解析:突出重用

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

解析:打印池里邊的打印任務是串行處理的,要保證串行,那么就只能一個打印池,要是多個打印池,那么就變成了并行處理,因此最有可能采用的模式是單例模式(保持唯一);這里可能會想到選A,但這里最關鍵的是打印池的唯一性,假設這里面選項有組合模式就可以考慮了。

26.下列關于簡單工廠模式與工廠方法模式表述錯誤的是()?

解析:簡單工廠是不符合開閉的,增加一種產品要修改原有的工廠方法。

27.在單例模式中的下列描述中正確的是()。

解析:單例模式涉及到唯一性,沒有就創建,有就返回,所以C、D就排除了,至于構造函數,肯定也是必須私有的,不然就不能控制了

28.長安汽車的不同型號的汽車在不同的工廠生產,如轎車在魚嘴工廠生產,SUV在渝北工廠生產,該場景蘊含了()模式

解析:工廠與產品 一一對應,這顯然是多工廠模式(工廠方法模式)

29.某公司要創建一個公文管理器,在公文管理器中將存放常用的公文模板,用戶使用的時候可以通過復制這些公文模板,快速創建新的公文,關于這個公文管理器說法正確的是()。

解析:模板對應原型,可以快速復制利用,模板管理器就對應原型管理器

30.關于原型模式中敘述錯誤的是()

解析:我們之前說過,淺克隆復制基本類型數據,引用類型僅復制地址,深克隆遞歸復制所有層級的對象,新實例與原實例完全獨立;原型模式需要對所有涉及到的類進行克隆,每個類都需要克隆方法

31.以下(?)中可以使用單例模式

解析:單例即唯一對象(唯一實例化),防止實例化多次

32.以下( )不是單例模式的要點

解析:單例模式是保證創建的實例只能有一個,對于是否能被繼承并不重要(用protected修飾就可以保證繼承了)。

33.以下關于單例模式的描述中,正確的是()

解析:單例=同時只能一個實例存在

34.某公司要開發一款聊天軟件,用戶在聊天過程中可以與多位好友同時聊天,這將會產生多個聊天窗口。為了提高創建的效率,采用( )進行設計比較合理。

解析:提高復用性

35.在某個畫圖軟件的導入功能設計的時候,需要為不同的圖片格式提供一個圖片讀取器。如gif圖片讀取器用于讀取gif圖片,jpg圖片讀取器用于讀取jpg圖片。在設計該程序的時候用()模式比較合適。

解析:圖片=產品;讀取器=工廠。不同工廠對應不同產品

36.某管理系統中,我們發現曲線圖創建器用于生成曲線圖,柱狀圖創建器用于生成柱狀圖。在該系統的設計中,設計人員最可能采取()模式來設計完成了該系統。

解析:跟前面一樣

22.在日常的銀行業務辦理中,為了均衡各個窗口之間排隊的壓力。在進入銀行的時候都要進行取號的操作。該場景中蘊含了()模式。

解析:取號操作中的每個號碼都是唯一的,體現了單例模式。而其他選項都沒辦法體現

二.判斷題

?1.Java中的一個類可以繼承多個類,實現一個接口。

解析:把繼承和實現剛好弄反了

2.抽象類的子類不能是抽象類。

解析:并非不能

3.接口中可以包含實例方法。

?解析:同樣是搞混了接口和抽象類

4.實現一個接口的時候,必須全部實現里面的方法。所以在接口定義的時候,要從分考慮接口隔離原則,對接口方法進行設計。

5.MVC中的M和V可以直接通信

解析:M是model,V是view,視圖和模型的通信是基于Controller的,C就是處理用戶輸入,協調 Model 和 View 的交互

6.SSM框架中,被@Service和@Mapper注解的類屬于MVC中的M的范疇。

解析:M是model,負責數據邏輯和業務規則,Service就是業務,Mapper就是進行數據庫操作

7.MVC中的M主要負責請求的跳轉。

解析:請求跳轉是C的職責

8.在SSM中為了方便,可以在@Controller標注的類中寫大量的業務處理代碼。

解析:前面說過了,業務處理是Service的地方

9.?MVC全名是Model View Commander,模型(model)-視圖(view)-命令器(Commander)的縮寫?

10.java方向,MVC的具體實現的經典模型2:JSP+Servlet+JavaBean 中Servlet充當了控制器的角色,JSP作為視圖,而JavaBean則充當了模型的角色

解析:區分模型1(JSP即作為視圖又作為Controller)即可

11.控制器(Controller):接受用戶輸入并調用模型和視圖去完成用戶的需求。在程序中屬于“領導的角色”,它的職責是指揮模型和視圖做具體的事兒,根據模型和視圖做事兒的結果做出下一步行動的決策

12.模型(Model):是應用程序的業務處理層,負責所有業務流程的處理和業務規則的制定。模型就是業務邏輯

解析:?不僅是業務邏輯,還有涉及到數據的持久化等等

13.視圖(View):是應用程序的表示層,代表用戶交互界面。在Web應用中,交互界面可能是HTML/JSP界面,也有可能是XML界面、Applet界面或其他界面。視圖可以理解為用戶界面,前臺。

?解析: XML也是可以寫界面的

14.在登錄程序中,登錄的servlet是屬于控制器。控制器做的事情是調用登錄的模型,獲得模型執行的結果(登錄成功與失敗),根據結果做出決策(跳轉到成功或者失敗的頁面)

15.經典的設計模式按照范圍可分為創建型、行為型、結構型三大類型。

解析:?區分范圍和目的,按范圍分只有兩類:類模式和對象模式

16.模式是在特定環境下人們解決某類重復出現問題的一套成功或有效的解決方案

17.模式的要素有三個:“模式可適用的前提條件”、“在特定條件下要解決的目標問題”、“對目標問題求解過程中各種物理關系的記述”?

解析:前提、目標、過程?

18.設計模式的關鍵要素有4個:模式名稱、問題、解決方案、效果

19.學生和班級之間是組合關系。

解析:組合我們說就是關聯關系,但是?學生和班級并不是強行關聯,沒有班級,學生也是獨立的實體,所以應該是聚合關系

20.在三層類圖中,出現的“#”的變量或方法表示在package訪問范圍可訪問。

解析:-private +public #protected ~package

21.工廠方式模式中,子類負責定義創建對象的接口,父類則負責生成具體的對象

解析:倒反天罡

22.在工廠方法模式中,對于存在繼承等級結構的產品樹,產品的創建是通過相應等級結構的工廠創建的。

23.工廠方法模式在定義框架的過程中很常用,這是因為它存在于一個抽象的層次上。

解析:常用就常用在符合開閉

24.餓漢式單例,不會存在線程安全性問題。

解析:比較 懶漢和餓漢式單例的區別發現,餓漢式單例在使用之前就已經創建了唯一實例,在使用時多個線程間不存在創建實例的操作,也就杜絕了線程安全問題

?25.餓漢式單例和懶漢式單例的空間效率是一樣的。

解析:餓漢式是先占用空間(不管用不用),懶漢式是使用的時候臨時申請空間,不用就不申請

26.若克隆對象是原型對象通過淺克隆創建出來的,那么對原型對象的引用類型的成員變量進行修改,會引起克隆對象的引用類型的成員變量的變化的主要原因是它們都指向了同一個引用類型對象。

解析:淺克隆的每個克隆對象里邊的引用變量的值是一樣的地址,所有淺克隆的對象的這個引用變量的地址所指向的對象肯定都是一樣的(地址沒變)

27.簡單工廠模式中的工廠類僅有一個實例,并自行實例化后向整個系統提供這個實例。

解析:靜態工廠方法(無實例)是更常見的實現方式,此時工廠類不存在 “唯一實例” 的概念

28.在工廠方法模式中可以讓一個工廠來創建幾個不同類型的關聯產品。

解析:不可能

29.工廠方法模式中的抽象產品角色可以由多個抽象類來承擔,同樣的也需要多個抽象工廠類來承擔抽象工廠的角色。

解析:抽象類只會有兩個

30.Java中的cloneable接口位于java.lang中,且在Object類中已經實現了。所以每個java類的對象都具備了自我克隆的功能。

解析:Object類的Cloneable接口是一個標記接口,不包含任何方法,僅用于告知 JVM 該類允許調用clone()方法;而同時要繼承Cloneable并重寫clone才可以自我克隆

31.通過克隆方式創建出來的對象,不能再次克隆出新的對象。

解析:克隆的原型(母體)不局限于初代,克隆后的對象(第二代、第三代……第n代)可以作為原型(母體)進行克隆

32.單例模式:確保一個類有且只有一個實例,并提供一個全局訪問點來訪問這個唯一實例

解析:不是“有且只有” 是“只有”,懶漢的時候不用就不會有這么個實例

33.在實現單例類的過程中,需要一個私有成員變量,這個變量一般設為靜態的。

解析:并非一般,而是必須靜態變量

34.與工廠模式相比,原型模式取消了工廠類,但工廠方法并沒有消失,而是融入到產品中了。

解析:原型模式中產品與工廠二合一

35.原型模式可以用于文件的“存檔”操作,也可以輔助實現“讀檔”操作

解析:題干符合克隆模式的優點之一:可以使用深克隆的方式保存對象的狀態,以便在需要的時候使用,可輔助實現撤銷操作

36.在用戶買手機的情景中,若不知道手機的具體型號,但知道手機的生產廠家,這種情況適用于工廠方法模式。

解析:用戶必須知道工廠(生產廠家)就能使用該模式,必須知道具體產品型號的話,那就是簡單工廠模式

37.創建型模式(Creational?Pattern)主要用于創建工廠,關注工廠組成結構的一系列模式

解析:創建型模式主要用于創建對象


一.單選題

1.設計模式的兩大主題是(??)?

A.系統的維護與開發

B.對象組合與類的繼承

C.系統架構與系統開發

D.系統復用與系統擴展

解析:無

答案:D?

2.下列模式中,屬于行為型模式的是()

A.工廠模式

B.觀察者

C.適配器

D.以上都是

解析:?排除A和D,剩下的觀察者的“觀察”才是描述交互行為的

答案:B

3.以下關于創建型模式說法準確的是( )

A.創建型模式關注的是對象的創建

B.創建型模式關注的是功能的實現

C.創建型模式關注的是組織類和對象的常用方法

D.創建型模式關注的是對象間的協作

解析:?關注功能是行為型模式,組織類和對象是結構型模式,關注對象協作也是行為型模式

答案:A

4.下列屬于面向對象基本原則的是

A.

繼承

B.

里氏代換?

C.

封裝

D.

都不是

?解析:記得區分特性和原則

答案:B

5.關于單一職責原則,以下敘說錯誤的是(?)?

A.

一個類只負責一個功能領域中的相應職責

B.

就一個類而言,應該有且只有一個引起它變化的原因

C.

一個類承擔的職責越多,越容易復用,被復用的可能性越大

D.

當一個類承擔的職責過多時,需要將職責進行分離。

解析:?單一職責是為了降低類的復雜度,使類的功能更內聚,變更時影響范圍更小;而職責過多的類耦合度高,復用需同時滿足所有職責的需求,場景限制嚴格,復用性更低

答案:C

6.要依賴于抽象,不要依賴于具體。即針對接口編程,不要針對實現編程,是( )的表述

A.

開-閉原則

B.

依賴倒轉原則

C.

接口隔離原則

D.

里氏代換原則

?解析:開閉和里氏代換不符合表述,而依賴倒轉是指高層模塊不依賴低層模塊,兩者均依賴抽象;接口隔離是指客戶端不依賴不需要的接口,使用多個特定接口替代單一復雜接口

答案:B

7.()將整個軟件系統劃分為模型、視圖和控制器三個部分。

A.

分層模式

B.

管道模式

C.

MVC

D.

架構模式

解析:MVC定義?

答案:C

8.依據設計模式思想,程序開發中應優先使用的是(? ?)關系實現復用

A.

對象組合

B.

創建

C.

繼承

D.

以上都不對

?解析:對象組合就是指關聯組合,組合優于繼承的原因在于:前者只實現接口,互不影響,而后者繼承父類,父類始終是具體方法的,而這個“具體方法”就是導致耦合度變高的原因。

答案:A

9.在設計模式的原則中,( )表示使用多個專門的接口比使用單一的總接口要好,一個類對另一個來的依賴性應當是建立在最小的接口上的。

A.

單一責任原則

B.

接口隔離原則

C.

依賴倒轉原則

D.

迪米特原則

解析:前面剛在解析里面講到的定義

答案:?B

10.以下不屬于結構型模式的是( )

A.

代理模式

B.

工廠方法模式

C.

適配器模式

D.

享元模式

解析:?結構型模式關注處理類或對象的組合

答案:B

11.當我們想創建一個具體的對象而又不希望指定具體的類時,可以使用( )模式

A.

結構型

B.

創建型

C.

行為型

D.

以上都可以

解析:涉及到創建對象的過程

答案:B

12.“不要和陌生人說話” 是(? ?)原則的通俗表述

A.

接口隔離

B.

依賴倒轉

C.

迪米特

D.

里氏代換

?解析:陌生人就是不相關的,其他原則前面提過了,迪米特原則也叫最少知識原則,指一個對象應盡可能少地了解其他對象,降低耦合度。A選項的接口隔離看起來似乎很像(我一開始也以為是A),但是我后面想了一下,“說話”這個詞還是指交互的,接口不管隔離不隔離都不存在接口間交互。

答案:C

13.對于依賴倒轉的表述錯誤的是

A.

依賴于抽象而不依賴于具體,也就是針對接口編程。

B.

依賴倒轉的接口并非語法意義上的接口,而是,一個類對其他對象進行調用時,所知道的方法集合。

C.

實現了同一接口的對象,可以在運行期間,順利地進行替換。而且不必知道所示用的對象是那個實現類的實例。

D.

以上都不對

解析:依賴倒轉的定義我們前面說到了,A是最直接的,B說的語法意義上的接口,這里我想的是因為還有可能是抽象類(不存在任何方法體的抽象類)。而C就是應用了依賴導致后的效果描述

答案:D

14.下面不是MVC優點的是

A.

耦合性低

B.

易于維護

C.

重用性高

D.

占用資源少

解析:任何一種模式為了解決問題體現自身的優點都不可避免的要花代價,占用的資源就不可能少,因此,占用資源一定不是MVC的優點

答案:D

15.下列不是MVC的組成部分的是

A.

View

B.

Controller

C.

Vista

D.

Model

解析:V是指視圖view

答案:C

16.下面不屬于簡單工廠方法模式的角色的是( )。

A.

抽象產品

B.

具體產品

C.

抽象工廠

D.

具體工廠

解析:簡單工廠方法是不存在抽象工廠的

答案:C

17.下面關于簡單工廠方法的說法中錯誤的是()。

A.

工廠類中的方法可以不是靜態的

B.

可以存在多個具體的產品

C.

在具體產品類中要實現抽象產品中的抽象方法

D.

具體產品和抽象產品之間是繼承關系

解析:簡單工廠又叫靜態工廠方法,那就自然不能不是靜態

答案:A

18.簡單工廠模式中的工廠方法的返回值用()的類型是合適的。

A.

具體產品

B.

抽象產品

C.

設置為void

D.

客戶端

解析:工廠生產的成果是產品,要通用,則是抽象產品

答案:B

19.下面關于靜態工廠方法模式的說法中錯誤的是()。

A.

該模式中被創建的實例通常具有共同的父類

B.

該模式中可以對具體的產品進行擴展

C.

該模式的工廠類可以派生出新的子類

D.

該模式的工廠類中集中了所有產品的創建邏輯

解析:靜態的代表了唯一,特定的,通常不會派生

答案:C

20.下面關于工廠方法模式的敘述中錯誤的是()

A.

工廠方法模式中一個工廠可以創建多個相關類型的產品。

B.

這個模式中有兩個抽象角色

C.

這個模式中有兩個具體角色

D.

工廠生產的產品由具體工廠自己選擇。

解析:工廠方法模式是多工廠,一個工廠指定生產一種產品,這是和簡單工廠模式的區別

答案:A

21.關于工廠方法模式的優缺點說法中正確的是()

A.

工廠方法模式不符合開閉原則。

B.

當具體產品的數量大量增加時候,不會引起具體工廠數量的增加

C.

在抽象工廠中就可以確定創建具體的產品對象

D.

將創建具體對象的細節完全封裝在具體工廠內部

解析:每種產品的生產細節分別封裝在每個具體工廠內部,一一對應,抽象工廠不做具體生產,每增加一種產品,則要增加一個工廠,新工廠與舊工廠生產的產品不同,他們之間沒有關聯

答案:D

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

A.

簡單工廠

B.

工廠方法

C.

單例模式

D.

原型模式

解析:能夠體現唯一的,那么就是單例模式了;注意原型模式在這個地方是不適用的,畢竟你不能讓來一個人申請身份證就是復制你的(當然其實把場景縮小是可以說D正確的,很多時候還是要關注題目歧義的)

答案:C

23.在醫院的檔案室存有很多的病例檔案,病人出院的時候,可以去檔案室里面取一份病例復印件,用于商業保險報銷等用途。這個過程可以用( )模式來模擬文印室的檔案管理流程。

A.

工廠方法模式

B.

抽象工廠模式

C.

單例模式

D.

原型模式

解析:這里就是典型的原型模式場景了

答案:D

24.( )模式是利用一個對象快速的生成一批對象

A.

單例

B.

抽象工廠

C.

建造者

D.

原型

解析:突出重用

答案:D

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

A.

命令模式

B.

原型模式

C.

工廠方法模式

D.

單例模式

解析:打印池里邊的打印任務是串行處理的,要保證串行,那么就只能一個打印池,要是多個打印池,那么就變成了并行處理,因此最有可能采用的模式是單例模式(保持唯一);這里可能會想到選A,但這里最關鍵的是打印池的唯一性,假設這里面選項有組合模式就可以考慮了。

?答案:D

26.下列關于簡單工廠模式與工廠方法模式表述錯誤的是()?

A.

兩者都滿足開閉原則:簡單工廠以if?else?方式創建對象,增加需求看看?時候會修改源代碼

B.

簡單工廠對具體產品的創建類別和創建時機的判斷是混合在一起的,這點在工廠方法模式中已經克服中已經克服。

C.

不能形成簡單工廠的繼承結構

D.

在工廠方法模式中,對于存在繼承等級結構的產品樹,產品的創建是通過相應等級結構的工廠創建的

解析:簡單工廠是不符合開閉的,增加一種產品要修改原有的工廠方法。

答案:A

27.在單例模式中的下列描述中正確的是()。

A.

類本身要提供一個靜態工廠方法,用于返回單例對象的引用。

B.

它有一個公共的構造函數

C.

它可以用new創建一個新的實體對象。

D.

它的內部不需要定義一個靜態的自身類型的屬性。

解析:單例模式涉及到唯一性,沒有就創建,有就返回,所以C、D就排除了,至于構造函數,肯定也是必須私有的,不然就不能控制了

答案:A

28.長安汽車的不同型號的汽車在不同的工廠生產,如轎車在魚嘴工廠生產,SUV在渝北工廠生產,該場景蘊含了()模式

A.

簡單工廠方法

B.

抽象工廠模式

C.

克隆模式

D.

工廠方法模式

解析:工廠與產品 一一對應,這顯然是多工廠模式(工廠方法模式)

答案:D

29.某公司要創建一個公文管理器,在公文管理器中將存放常用的公文模板,用戶使用的時候可以通過復制這些公文模板,快速創建新的公文,關于這個公文管理器說法正確的是()。

A.

它是工廠方法模式中的具體產品的集合。

B.

它是簡單工廠中的具體產品的集合。

C.

它是原型模式中的原型管理器。

D.

它是抽象工廠模式中的具體產品的集合

解析:模板對應原型,可以快速復制利用,模板管理器就對應原型管理器

答案:C

30.關于原型模式中敘述錯誤的是()

A.

在淺克隆中不復制對象的引用對象。

B.

在深克隆中的引用對象是相對獨立的。

C.

原型模式中不需要為每一個類配備一個克隆方法,因此對于已有的類的改造也較為容易。

D.

抽象原型角色中可以實現Cloneable接口。

解析:我們之前說過,淺克隆復制基本類型數據,引用類型僅復制地址,深克隆遞歸復制所有層級的對象,新實例與原實例完全獨立;原型模式需要對所有涉及到的類進行克隆,每個類都需要克隆方法

答案:C

31.以下(?)中可以使用單例模式

A.

隔離菜單項對象的創建和使用

B.

防止一個資源管理器窗口被實例化多次

C.

使用一個已有查找算法而不想修改既有代碼。

D.

不能創建子類,需要擴展一個數據過濾類

解析:單例即唯一對象(唯一實例化),防止實例化多次

答案:B

32.以下( )不是單例模式的要點

A.

某個類只能有一個實例

B.

單例不能被繼承

C.

必須自行創建單個實例

D.

必須自行向整個系統提供單個實例

解析:單例模式是保證創建的實例只能有一個,對于是否能被繼承并不重要(用protected修飾就可以保證繼承了)。

答案:B

33.以下關于單例模式的描述中,正確的是()

A.

它描述了只有一個方法的類的集合

B.

它能夠保證一個類只產生一個唯一的實例

C.

它描述了只有一個屬性的類的集合

D.

它能夠保證一個類的方法只能被一個唯一的類調用。

解析:單例=同時只能一個實例存在

答案:B

34.某公司要開發一款聊天軟件,用戶在聊天過程中可以與多位好友同時聊天,這將會產生多個聊天窗口。為了提高創建的效率,采用( )進行設計比較合理。

A.

抽象工廠模式

B.

簡單工程模式

C.

原型模式

D.

工廠方法模式

解析:提高復用性

答案:C

35.在某個畫圖軟件的導入功能設計的時候,需要為不同的圖片格式提供一個圖片讀取器。如gif圖片讀取器用于讀取gif圖片,jpg圖片讀取器用于讀取jpg圖片。在設計該程序的時候用()模式比較合適。

A.

抽象工廠

B.

工廠方法

C.

建造者

D.

原型模式

解析:圖片=產品;讀取器=工廠。不同工廠對應不同產品

答案:B

36.某管理系統中,我們發現曲線圖創建器用于生成曲線圖,柱狀圖創建器用于生成柱狀圖。在該系統的設計中,設計人員最可能采取()模式來設計完成了該系統。

A.

簡單工廠

B.

橋接

C.

工廠方法

D.

原型模式

解析:跟前面一樣

答案:C

22.在日常的銀行業務辦理中,為了均衡各個窗口之間排隊的壓力。在進入銀行的時候都要進行取號的操作。該場景中蘊含了()模式。

A.

單例模式

B.

原型模式

C.

工廠方法模式

D.

簡單工廠模式

解析:取號操作中的每個號碼都是唯一的,體現了單例模式。而其他選項都沒辦法體現

答案:C

二.判斷題

?1.Java中的一個類可以繼承多個類,實現一個接口。

解析:把繼承和實現剛好弄反了

答案:錯

2.抽象類的子類不能是抽象類。

解析:并非不能

答案:錯

3.接口中可以包含實例方法。

?解析:同樣是搞混了接口和抽象類

答案:錯

4.實現一個接口的時候,必須全部實現里面的方法。所以在接口定義的時候,要從分考慮接口隔離原則,對接口方法進行設計。

答案:對

5.MVC中的M和V可以直接通信

解析:M是model,V是view,視圖和模型的通信是基于Controller的,C就是處理用戶輸入,協調 Model 和 View 的交互

答案:錯

6.SSM框架中,被@Service和@Mapper注解的類屬于MVC中的M的范疇。

解析:M是model,負責數據邏輯和業務規則,Service就是業務,Mapper就是進行數據庫操作

答案:對

7.MVC中的M主要負責請求的跳轉。

解析:請求跳轉是C的職責

答案:錯

8.在SSM中為了方便,可以在@Controller標注的類中寫大量的業務處理代碼。

解析:前面說過了,業務處理是Service的地方

答案:錯

9.?MVC全名是Model View Commander,模型(model)-視圖(view)-命令器(Commander)的縮寫?

答案:錯

10.java方向,MVC的具體實現的經典模型2:JSP+Servlet+JavaBean 中Servlet充當了控制器的角色,JSP作為視圖,而JavaBean則充當了模型的角色

解析:區分模型1(JSP即作為視圖又作為Controller)即可

答案:對

11.控制器(Controller):接受用戶輸入并調用模型和視圖去完成用戶的需求。在程序中屬于“領導的角色”,它的職責是指揮模型和視圖做具體的事兒,根據模型和視圖做事兒的結果做出下一步行動的決策

答案:對

12.模型(Model):是應用程序的業務處理層,負責所有業務流程的處理和業務規則的制定。模型就是業務邏輯

解析:?不僅是業務邏輯,還有涉及到數據的持久化等等

答案:錯

13.視圖(View):是應用程序的表示層,代表用戶交互界面。在Web應用中,交互界面可能是HTML/JSP界面,也有可能是XML界面、Applet界面或其他界面。視圖可以理解為用戶界面,前臺。

?解析: XML也是可以寫界面的

答案:對

14.在登錄程序中,登錄的servlet是屬于控制器。控制器做的事情是調用登錄的模型,獲得模型執行的結果(登錄成功與失敗),根據結果做出決策(跳轉到成功或者失敗的頁面)

答案:對

15.經典的設計模式按照范圍可分為創建型、行為型、結構型三大類型。

解析:?區分范圍和目的,按范圍分只有兩類:類模式和對象模式

答案:錯

16.模式是在特定環境下人們解決某類重復出現問題的一套成功或有效的解決方案

答案:對

17.模式的要素有三個:“模式可適用的前提條件”、“在特定條件下要解決的目標問題”、“對目標問題求解過程中各種物理關系的記述”?

解析:前提、目標、過程?

答案:對

18.設計模式的關鍵要素有4個:模式名稱、問題、解決方案、效果

答案:對

19.學生和班級之間是組合關系。

解析:組合我們說就是關聯關系,但是?學生和班級并不是強行關聯,沒有班級,學生也是獨立的實體,所以應該是聚合關系

答案:錯

20.在三層類圖中,出現的“#”的變量或方法表示在package訪問范圍可訪問。

解析:-private +public #protected ~package

答案:錯

21.工廠方式模式中,子類負責定義創建對象的接口,父類則負責生成具體的對象

解析:倒反天罡

答案:錯

22.在工廠方法模式中,對于存在繼承等級結構的產品樹,產品的創建是通過相應等級結構的工廠創建的。

答案:對

23.工廠方法模式在定義框架的過程中很常用,這是因為它存在于一個抽象的層次上。

解析:常用就常用在符合開閉

答案:對

24.餓漢式單例,不會存在線程安全性問題。

解析:比較 懶漢和餓漢式單例的區別發現,餓漢式單例在使用之前就已經創建了唯一實例,在使用時多個線程間不存在創建實例的操作,也就杜絕了線程安全問題

答案:對

?25.餓漢式單例和懶漢式單例的空間效率是一樣的。

解析:餓漢式是先占用空間(不管用不用),懶漢式是使用的時候臨時申請空間,不用就不申請

答案:錯

26.若克隆對象是原型對象通過淺克隆創建出來的,那么對原型對象的引用類型的成員變量進行修改,會引起克隆對象的引用類型的成員變量的變化的主要原因是它們都指向了同一個引用類型對象。

解析:淺克隆的每個克隆對象里邊的引用變量的值是一樣的地址,所有淺克隆的對象的這個引用變量的地址所指向的對象肯定都是一樣的(地址沒變)

答案:對

27.簡單工廠模式中的工廠類僅有一個實例,并自行實例化后向整個系統提供這個實例。

解析:靜態工廠方法(無實例)是更常見的實現方式,此時工廠類不存在 “唯一實例” 的概念

答案:對

28.在工廠方法模式中可以讓一個工廠來創建幾個不同類型的關聯產品。

解析:不可能

答案:錯

29.工廠方法模式中的抽象產品角色可以由多個抽象類來承擔,同樣的也需要多個抽象工廠類來承擔抽象工廠的角色。

解析:抽象類只會有兩個

答案:錯

30.Java中的cloneable接口位于java.lang中,且在Object類中已經實現了。所以每個java類的對象都具備了自我克隆的功能。

解析:Object類的Cloneable接口是一個標記接口,不包含任何方法,僅用于告知 JVM 該類允許調用clone()方法;而同時要繼承Cloneable并重寫clone才可以自我克隆

答案:錯

31.通過克隆方式創建出來的對象,不能再次克隆出新的對象。

解析:克隆的原型(母體)不局限于初代,克隆后的對象(第二代、第三代……第n代)可以作為原型(母體)進行克隆

答案:錯

32.單例模式:確保一個類有且只有一個實例,并提供一個全局訪問點來訪問這個唯一實例

解析:不是“有且只有” 是“只有”,懶漢的時候不用就不會有這么個實例

答案:錯

33.在實現單例類的過程中,需要一個私有成員變量,這個變量一般設為靜態的。

解析:并非一般,而是必須靜態變量

答案:錯

34.與工廠模式相比,原型模式取消了工廠類,但工廠方法并沒有消失,而是融入到產品中了。

解析:原型模式中產品與工廠二合一

答案:對

35.原型模式可以用于文件的“存檔”操作,也可以輔助實現“讀檔”操作

解析:題干符合克隆模式的優點之一:可以使用深克隆的方式保存對象的狀態,以便在需要的時候使用,可輔助實現撤銷操作

答案:對

36.在用戶買手機的情景中,若不知道手機的具體型號,但知道手機的生產廠家,這種情況適用于工廠方法模式。

解析:用戶必須知道工廠(生產廠家)就能使用該模式,必須知道具體產品型號的話,那就是簡單工廠模式

答案:對

37.創建型模式(Creational?Pattern)主要用于創建工廠,關注工廠組成結構的一系列模式

解析:創建型模式主要用于創建對象

答案:錯

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/86297.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/86297.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/86297.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【編程基本功】Win11中Git安裝配置全攻略,包含Git以及圖形化工具TortoiseGit

1 摘要 今天田辛老師給大家帶來了一份超實用的博客,手把手教你安裝并配置 Git 及其圖形化界面 TortoiseGit,從官網下載到最終完成配置,每一個步驟都給大家講得明明白白,還配有相應的截圖,即使是新手小白也能輕松上手&…

細談QT信號與槽機制

轉自個人博客 信號與槽是我個人認為QT中最牛的機制之一,最近沒有其他的內容可寫,今天就來細細總結一下這個信號與槽機制。 1. 信號與槽機制概述 信號與槽機制可以理解為QT中的一種通信手段,在運行相關代碼前,分別聲明信號和槽&a…

Docker Swarm 與 Kubernetes 在集群管理上的主要區別

Docker Swarm 和 Kubernetes 是兩種流行的容器編排工具,它們都可以用于部署、管理和擴展容器化應用,但在集群管理方面有明顯的差異。 下面從多個維度對比它們在集群管理上的主要區別: ? 一、總體定位 項目Docker SwarmKubernetes官方支持D…

【StarRocks系列】查詢優化

步驟參考官網 分析查詢 | StarRocks StarRocks-Profile分析及優化指南 StarRocks-Profile分析及優化指南 - 經驗教程 - StarRocks中文社區論壇

軟測八股--測試理論 1 測試基礎

軟件測試? 發現程序中的側屋執行程序工程 目的:不僅是找出錯誤,還要分析錯誤產生原因和錯誤分布。檢查開發如阿健過程出現的bug,使開發人員及時修改。測試只能說明軟件中存在錯誤 目標:盡可能發現多的錯誤。一個好的…

mfc與vs成功在xp系統所需做的修改

目錄 前言一、MFC程序 inet_pton 、CT2A 未聲明問題1)問題1:inet_pton :undeclared identifier - inet_pton未聲明2)問題1:CT2A :undeclared identifier - CT2A未聲明 二、VS程序 使用事件、委托問題1&…

SpringMVC系列(三)(請求處理的十個實驗(上))

0 引言 作者正在學習SpringMVC相關內容,學到了一些知識,希望分享給需要短時間想要了解SpringMVC的讀者朋友們,想用通俗的語言講述其中的知識,希望與諸位共勉,共同進步! 本系列會持續更新!&…

Python案例練習:函數專題

用函數重新設計文章單詞出現次數程序 composition This is my family. We have a father, a mother and two brothers. My father is a doctor. He works in a hospital. My mother is a teacher. She teaches English in a school. My older brother is a student. He stu…

數據驅動 AI 時代:數據庫行業的技術躍遷與生態重構

在數據驅動的 AI 戰場,真正的決勝武器不是復雜精妙的算法模型,而是深埋在企業核心系統中的高維數據網絡(圖)。 時至今日,市場對AI的風向正從“狂飆突進”轉向“精耕細作”,就在上周(米國時間6月…

碼分復用通俗理解

一、碼分復用(CDMA)的通俗理解 碼分復用(Code Division Multiple Access,CDMA)是一種讓多個用戶在同一時間、同一頻段上同時傳輸數據的技術。它的核心思想是:給每個用戶分配一個唯一的“編碼鑰匙”&#x…

MAC、IP地址、TCP、UDP、SSL、OSI模型

目錄 一 概要 二 MAC和IP地址 (1)什么是 MAC 地址? (2)什么是 IP 地址? (3)MAC 地址 vs IP 地址對比表 (4)總結一下 二 TCP、UDP、SSL詳細介紹 &#…

弱口令介紹及破解方式筆記

一、弱口令的定義與危害 弱口令是指容易被猜測或破解的密碼,通常包含簡單數字組合(如“123456”)、鍵盤連續字符(如“qwerty”)、個人信息(如生日、姓名)或常見詞匯(如“password”…

Kotlin 中ArrayList、listOf、arrayListOf 和 mutableListOf區別

在 Kotlin 中&#xff0c;ArrayList、listOf、arrayListOf 和 mutableListOf 是常用的集合創建方式&#xff0c;但它們在類型、可變性和使用場景上有明顯區別。以下是核心對比&#xff1a; 一、基本定義與類型 創建方式類型可變性底層實現ArrayList<T>()ArrayList<T…

C盤清理技巧分享:釋放寶貴空間,提升電腦性能

Hi&#xff0c;我是布蘭妮甜 &#xff01;隨著電腦使用時間的增長&#xff0c;C盤空間逐漸被各種文件占據&#xff0c;導致系統運行緩慢、程序響應遲鈍。對于許多用戶來說&#xff0c;C盤空間不足是一個常見且令人頭疼的問題。本文將分享一系列實用的C盤清理技巧&#xff0c;幫…

【 感知集群】大規模分布式基礎設施的AI賦能藍圖

第一部分&#xff1a;AIOps基礎——從被動響應到預測性運維 在本報告的初始部分&#xff0c;我們將為管理一個復雜的大規模集群建立關鍵的基線。我們認為&#xff0c;在追求高級優化或未來主義架構之前&#xff0c;一個強大、由人工智能驅動的運維基礎是不可或缺的。本部分將詳…

《R循環:深度解析與高效使用技巧》

《R循環:深度解析與高效使用技巧》 引言 R語言作為一種功能強大的統計計算和圖形顯示語言,被廣泛應用于科研、數據分析、金融等領域。R循環是R語言中的核心概念之一,對于提高編程效率、處理復雜數據至關重要。本文將深度解析R循環,并介紹高效使用技巧,幫助讀者更好地掌握…

Windows WSL安裝Emscripten?/emsdk(失敗)

前面說過&#xff0c;在CMD、PS下&#xff0c;根本安裝不了。那只能試試在WSL安裝了。 安裝ubuntu 管理員運行PowerShell wsl --install ubuntu自帶python3&#xff0c;不需要安裝。 安裝 我就奇怪了&#xff0c;都說得頭頭是道&#xff0c;實際上一操作就出問題&#xff…

SpringBoot + EMQX 通過MQTT協議和下位機建立通訊并獲取下位機的監測數據-->測試

一、說明 在上一個博客中&#xff0c;我們部署了 EMQX 服務器&#xff0c;實現了 SpringBoot EMQX 通過MQTT協議和下位機建立通訊并獲取下位機的監測數據的編碼。現在我們對編碼進行進一步的測試。 二、編碼測試 2.1 在 EMQX 服務器開啟客戶端認證 這里的客戶端認證&#xf…

#17 修改開源模型以適配新任務

在Kaggle的評論區看到有選手想用Swin Transformer來做回歸任務,從這個片段可以窺見修改模型的一些思路,于是記錄下來學習一下 基于 torchvision Swin_B 模型的特征提取 from torchvision.models.swin_transformer import swin_b, Swin_B_Weights, swin_v2_b, Swin_V2_B_Weig…

變電站自動化系統有哪些設備?

變電站自動化系統是由多類設備協同工作的復雜系統&#xff0c;其設備按功能層級可分為過程層設備?&#xff08;直接連接一次設備&#xff09;、間隔層設備?&#xff08;實現保護控制&#xff09;和站控層設備?&#xff08;數據匯總與監控&#xff09;&#xff0c;同時還包括…