前言
解析是我個人的理解,相對來說我覺得是能對上定義的邏輯的?
目錄
一.單選題
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)主要用于創建工廠,關注工廠組成結構的一系列模式
解析:創建型模式主要用于創建對象
答案:錯