Java設(shè)計(jì)模式面試題和答案_第1頁
Java設(shè)計(jì)模式面試題和答案_第2頁
Java設(shè)計(jì)模式面試題和答案_第3頁
Java設(shè)計(jì)模式面試題和答案_第4頁
免費(fèi)預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

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

文檔簡介

Java設(shè)計(jì)模式面試題和答案1、Java設(shè)計(jì)模式有哪些類別?基于問題分析,我們可以將設(shè)計(jì)模式分為以下幾類。創(chuàng)造模式工廠方法/模板抽象工廠建造者原型辛格爾頓結(jié)構(gòu)圖案適配器橋篩選合成的裝飾器正面蠅量級(jí)代理人行為模式解釋器模式模板方法/模式責(zé)任鏈命令模式迭代器模式策略模式訪客模式J2EE模式MVC模式數(shù)據(jù)訪問對象模式前控制器模式攔截過濾器模式轉(zhuǎn)移對象模式2、Java設(shè)計(jì)模式有什么優(yōu)點(diǎn)?Java設(shè)計(jì)模式有以下優(yōu)點(diǎn):設(shè)計(jì)模式可在多個(gè)項(xiàng)目中重用。設(shè)計(jì)模式提供了一個(gè)有助于定義系統(tǒng)架構(gòu)的解決方案。設(shè)計(jì)模式捕捉軟件工程經(jīng)驗(yàn)。設(shè)計(jì)模式為應(yīng)用程序的設(shè)計(jì)提供了透明度。由于它們建立在專業(yè)軟件開發(fā)人員的知識(shí)和經(jīng)驗(yàn)之上,因此它們得到了證明和充分證明。3、四人組(GOF)是什么?1994年,四位作者ErichGamma^RalphJohnson>RichardHei和JohnVlissides出版了一本名為DesignPatternsElementsofReusableObject-OrientedSoftware的書。本書介紹了軟件開發(fā)中的設(shè)計(jì)模式的概念。這四位作者被稱為四人組GOFo4、什么是創(chuàng)造型模式?創(chuàng)造型設(shè)計(jì)模式與創(chuàng)建對象的方式有關(guān)。在類的實(shí)例化時(shí)做出決定時(shí)使用創(chuàng)建設(shè)計(jì)模式。EmpRecordel=newEmpRecord();由于new關(guān)鍵字用于在Java中創(chuàng)建對象,因此,這里我們使用new關(guān)鍵字創(chuàng)建實(shí)例。在某些情況下,必須根據(jù)程序的性質(zhì)改變對象的性質(zhì)。在這種情況下,我們應(yīng)該使用創(chuàng)建設(shè)計(jì)模式來提供更通用和靈活的方法。5、什么是工廠模式?工廠模式是Java中最常用的設(shè)計(jì)模式。這些設(shè)計(jì)模式屬于創(chuàng)建模式,因?yàn)樵撃J教峁┝藙?chuàng)建對象的最佳方式之一。在工廠模式中,我們不向客戶端公開創(chuàng)建邏輯,而是使用標(biāo)準(zhǔn)接口引用創(chuàng)建的對象。工廠模式允許子類選擇要?jiǎng)?chuàng)建的對象類型。工廠模式也稱為虛擬構(gòu)造器。6、什么是抽象工廠模式?抽象工廠模式定義了一個(gè)抽象類或接口,用于創(chuàng)建相關(guān)對象的系列,但沒有指定它們的具體子類。這意味著抽象工廠允許一個(gè)類返回一個(gè)類工廠。這就是為什么抽象工廠模式比工廠模式高一級(jí)。抽象工廠模式圍繞創(chuàng)建其他類的超類工作。抽象工廠模式屬于創(chuàng)建模式,因?yàn)樵撃J教峁┝藙?chuàng)建對象的最佳方法之一。在抽象工廠模式中,接口負(fù)責(zé)創(chuàng)建相關(guān)對象的工廠,而無需明確標(biāo)識(shí)它們的類。每個(gè)生成的工廠都可以根據(jù)工廠模式給出對象。7、Java中的結(jié)構(gòu)模式是什么?結(jié)構(gòu)模式用于提供有關(guān)類組合和對象結(jié)構(gòu)的解決方案和有效標(biāo)準(zhǔn)。它們依賴于繼承和接口的概念來允許多個(gè)對象或類一起工作并形成一個(gè)單一的工作整體。結(jié)構(gòu)設(shè)計(jì)模式負(fù)責(zé)如何組合類和對象以形成更大的結(jié)構(gòu)。8、單例模式是什么?Java中的單例模式是一種允許應(yīng)用程序中的單個(gè)實(shí)例的模式。單例模式的一個(gè)很好的例子是。單例模式狀態(tài)定義了一個(gè)只有一個(gè)實(shí)例的類,并提供了一個(gè)全局訪問點(diǎn)。換句話說,類的職責(zé)是只創(chuàng)建一個(gè)實(shí)例,而所有其他類都可以使用一個(gè)對象。9、有多少種方法可以創(chuàng)建單例模式?有兩種創(chuàng)建單例模式的方法:早期實(shí)例化它負(fù)責(zé)在加載時(shí)創(chuàng)建實(shí)例。惰性實(shí)例化它負(fù)責(zé)在需要時(shí)創(chuàng)建實(shí)例。10、什么是適配器模式?適配器模式根據(jù)需求將一個(gè)類的接口轉(zhuǎn)換為另一個(gè)接口。換句話說,它可以讓您在使用具有不同接口的類服務(wù)時(shí),根據(jù)需要轉(zhuǎn)換接口。它也被稱為包裝器。11、適配器模式的用途是什么?適配器模式用于以下情況:當(dāng)對象需要使用具有不兼容接口的現(xiàn)有類時(shí)。如果想創(chuàng)建一個(gè)可重用的類,它與沒有兼容接口的類協(xié)作。12、設(shè)計(jì)模式的策略是什么?在描述設(shè)計(jì)模式時(shí)需要注意以下幾點(diǎn):模式名稱和分類。問題和解決方案。后果:還應(yīng)解決變化和依賴于語言的替代方案。用途:確定實(shí)際系統(tǒng)中的用途及其效率。13、Java中的裝飾器模式是什么?請用一個(gè)例子來解釋一下?裝飾器模式是流行的Java設(shè)計(jì)模式之一。它很常見,因?yàn)樗趈ava.io(包)中的大量使用。裝飾器模式使用組合代替繼承來在運(yùn)行時(shí)擴(kuò)展對象的功能。BufferedReader和BufferedWriter是Java中裝飾器模式的一些優(yōu)秀示例。14、Java中策略和狀態(tài)設(shè)計(jì)模式的區(qū)別?這個(gè)問題是一個(gè)常見的Java設(shè)計(jì)模式面試問題,因?yàn)椴呗院蜖顟B(tài)模式具有相同的結(jié)構(gòu)。兩種模式的UML類圖看起來完全相同,但它們的意圖不同。狀態(tài)設(shè)計(jì)模式用于管理和定義對象的狀態(tài),而策略模式用于描述一組可互換的算法。15、Java中復(fù)合設(shè)計(jì)模式的優(yōu)點(diǎn)是什么?復(fù)合設(shè)計(jì)模式允許客戶對可能或可能不代表對象層次結(jié)構(gòu)的對象進(jìn)行集體操作。復(fù)合設(shè)計(jì)模式的優(yōu)點(diǎn)如下:它描述了包含原始和復(fù)雜對象的類層次結(jié)構(gòu)。它使添加新類型的組件變得容易。它通過可管理的類或接口來促進(jìn)結(jié)構(gòu)的靈活性。16、請描述一下復(fù)合模式的用途?復(fù)合模式用于以下情況:當(dāng)我們想要表示對象的部分或全部層次結(jié)構(gòu)時(shí)。如果我們需要?jiǎng)討B(tài)地將職責(zé)添加到單個(gè)對象而不影響其他對象。17、JDK庫中使用了哪些設(shè)計(jì)模式?JDK庫中使用的一些設(shè)計(jì)模式如下:Wrapper類使用裝飾器模式。Calendar類(運(yùn)行時(shí))使用單例模式。Wrapper類使用像Integer.valueOf這樣的工廠模式。事件處理框架使用像swing、awt這樣的觀察者模式。18>Java中Builder設(shè)計(jì)模式有什么優(yōu)勢?構(gòu)建器設(shè)計(jì)模式的優(yōu)點(diǎn)如下:它有助于明確區(qū)分對象的構(gòu)造和表示。它提供了對施工過程的改進(jìn)控制。構(gòu)造函數(shù)參數(shù)減少了,并在高度可讀的方法調(diào)用中提供。在設(shè)計(jì)模式中,對象總是以完整的狀態(tài)被實(shí)例化。在Builder設(shè)計(jì)模式中,Immutable對象可以在對象構(gòu)建過程中快速構(gòu)建。19、能用Java寫線程安全的單例嗎?有很多方法可以在Java中編寫線程安全的單例??梢酝ㄟ^使用雙重檢查鎖定編寫單例來編寫線程安全的單例。另一種方法是,通過使用在類加載期間初始化的靜態(tài)Singleton實(shí)例。通過使用Java枚舉來創(chuàng)建線程安全的單例,這是最直接的方法。20、是否可以創(chuàng)建單例對象的克???是的,可以創(chuàng)建單例對象的克隆。21、什么是代理模式,它有什么作用?術(shù)語Proxy代表一個(gè)對象代表另一個(gè)對象。代理模式為其他目的提供替代或占位符來控制對其的訪問。根據(jù)四人組的說法,代理模式''提供對訪問原始對象的控制〃。我們可以執(zhí)行許多安全操作,例如隱藏原始對象的信息、按需加載等。它也被稱為占位符或代理。22、Java中有哪些不同類型的代理?在很多情況下,代理模式是有益的。下面來看看一些不同的代理。保護(hù)代理它根據(jù)某些條件控制對真實(shí)主題的訪問。虛擬代理虛擬代理用于實(shí)例化昂貴的對象。代理在實(shí)現(xiàn)中管理真實(shí)主體的生命周期。它決定實(shí)例創(chuàng)建的需要以及何時(shí)重用它。虛擬代理優(yōu)化性能。緩存代理緩存代理用于緩存對真實(shí)主題的昂貴調(diào)用。代理可以使用許多緩存策略。其中一些是通讀、通寫、緩存和基于時(shí)間的。緩存代理用于提高性能。遠(yuǎn)程代理遠(yuǎn)程代理用于分布式對象通信。遠(yuǎn)程代理通過調(diào)用本地對象方法在遠(yuǎn)程對象上執(zhí)行。智能代理智能代理用于實(shí)現(xiàn)對對象的日志調(diào)…23、責(zé)任鏈模式是什么?在責(zé)任鏈模式中,Sender向?qū)ο箧湴l(fā)送請求,鏈中的任何對象都可以處理該請求。責(zé)任鏈模式避免將請求的發(fā)送者耦合到其接收者。例如,ATM服務(wù)在貨幣交易中使用責(zé)任鏈設(shè)計(jì)模式。此外,我們可以解釋,通常每個(gè)接收器都包含另一個(gè)接收器的引用。如果一個(gè)對象無法處理請求,那么它會(huì)將相同的請求發(fā)送給下一個(gè)接收者,依此類推。24、責(zé)任鏈模式的優(yōu)勢以及何時(shí)使用?它使耦合最小化。它在將職責(zé)分配給對象時(shí)提供了靈活性。它允許一組類作為一個(gè)類。一個(gè)類中產(chǎn)生的事件可以在組合的幫助下發(fā)送到其他處理程序類。責(zé)任鏈模式的使用它用于以下情況:當(dāng)多個(gè)對象準(zhǔn)備好處理一個(gè)請求并且處理程序未知時(shí)。如果必須動(dòng)態(tài)指定可以處理請求的集合或一組對象。25、橋接模式與適配器模式有何不同?適配器模式的動(dòng)機(jī)是使一個(gè)或多個(gè)類的接口看起來相似。Bridge模式旨在將類的接口與其實(shí)現(xiàn)隔離,因此可以在不更改客戶端代碼的情況下更改或替換實(shí)現(xiàn)。26、依賴注入和服務(wù)定位器模式有什么區(qū)別?服務(wù)定位器用于創(chuàng)建類依賴項(xiàng)。無論是否使用服務(wù)定位器,該類仍然負(fù)責(zé)創(chuàng)建其依賴項(xiàng)。服務(wù)定位器也用于隱藏依賴關(guān)系。當(dāng)對象從定位器獲取連接時(shí),我們不能通過查看對象來判斷它是否與數(shù)據(jù)庫連接。使用依賴注入,包含其依賴的類既不知道也不關(guān)心它們來自哪里。一個(gè)顯著的區(qū)別是依賴注入更容易進(jìn)行單元測試,因?yàn)榭梢詡魅胨囊蕾噷ο蟮哪M實(shí)現(xiàn)。可以結(jié)合這兩個(gè)對象并應(yīng)用服務(wù)定位器。27、什么是MVC模式?MVC模式是J2EE設(shè)計(jì)模式類別中最常用的模式之一。它與模型-視圖-控制器的概念非常相似??s寫MVC取自Model-view-controller概念。模型是對象,用作將在應(yīng)用程序中使用的所有對象的藍(lán)圖。視圖包含位于模型中的數(shù)據(jù)和信息的表示方面??刂破骺刂颇P秃鸵晥D,因?yàn)樗鼈兂洚?dāng)兩個(gè)對象之間的連接。控制器在View和Model之間扮演接口的角色,并且攔截所有傳入的請求。28、攔截過濾器設(shè)計(jì)模式是什么,它有什么好處?攔截過濾器設(shè)計(jì)模式用于在請求處理之前和之后攔截和操縱請求和響應(yīng)。過濾器執(zhí)行請求的身份驗(yàn)證/授權(quán)/記錄或跟蹤,然后將請求轉(zhuǎn)發(fā)給相應(yīng)的處理程序。讓我們看一下攔截設(shè)計(jì)模式的一些基本實(shí)體。過濾器設(shè)計(jì)模式它在請求處理程序執(zhí)行請求之前或之后執(zhí)行某個(gè)任務(wù)。過濾鏈它包含多個(gè)過濾器,并有助于在目標(biāo)上按定義的順序執(zhí)行它們。目標(biāo)目標(biāo)對象是請求處理程序過濾器管理器它管理過濾器和過濾器鏈??蛻艨蛻舳藢ο笫窍蚰繕?biāo)對象發(fā)送請求的對象。攔截過濾器設(shè)計(jì)模式的好處過濾器模式通過松散耦合的處理程序提供中央控制。它擴(kuò)展了…29、數(shù)據(jù)訪問對象(DAO)模式是什么?數(shù)據(jù)訪問對象模式用于將低級(jí)數(shù)據(jù)訪問API或操作與高級(jí)業(yè)務(wù)服務(wù)隔離開來。以下是DAO模式中的組件。數(shù)據(jù)訪問對象接口DAO接口描述了對模型對象執(zhí)行的標(biāo)準(zhǔn)操作。數(shù)據(jù)訪問對象具體類這個(gè)類實(shí)現(xiàn)了一個(gè)dao接口

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論