這篇文章主要介紹了Java設(shè)計(jì)模式面試題有哪些,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
成都創(chuàng)新互聯(lián)公司是一家專注于網(wǎng)站制作、網(wǎng)站建設(shè)與策劃設(shè)計(jì),沁源網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:沁源等地區(qū)。沁源做網(wǎng)站價(jià)格咨詢:189820811081:什么是設(shè)計(jì)模式?
就是經(jīng)過(guò)實(shí)踐驗(yàn)證的用來(lái)解決特定環(huán)境下特定問(wèn)題的解決方案
2:設(shè)計(jì)模式用來(lái)干什么?
尋找合適的對(duì)象
決定對(duì)象的粒度
指定對(duì)象的接口
描述對(duì)象的實(shí)現(xiàn)
運(yùn)用復(fù)用機(jī)制
重復(fù)使用經(jīng)過(guò)實(shí)踐驗(yàn)證的正確的,用來(lái)解決某一類問(wèn)題的解決方案來(lái)達(dá)到減少
工作量、提高正確率等目的。
3:什么是對(duì)象粒度
對(duì)象中方法的多少就是粒度
4:基本的Java編程設(shè)計(jì)應(yīng)遵循的規(guī)則?
面向接口編程,優(yōu)先使用對(duì)象組合
5:設(shè)計(jì)模式的應(yīng)用范圍
所能解決的特定的一類問(wèn)題中
6:簡(jiǎn)述什么是單例模式,以及他解決的問(wèn)題,應(yīng)用的環(huán)境,解決的方案,模式的本質(zhì)?
在任何時(shí)間內(nèi)只有一個(gè)類實(shí)例存在的模式。
需要有一個(gè)從中進(jìn)行全局訪問(wèn)和維護(hù)某種類型數(shù)據(jù)的區(qū)域的環(huán)境下使用單例模式。
解決方案就是保證一個(gè)類只有一個(gè)類實(shí)例存在。
本質(zhì)就是實(shí)例共用同一塊內(nèi)存區(qū)域。
7:代碼示例:?jiǎn)卫J降膬煞N實(shí)現(xiàn)方法,并說(shuō)明優(yōu)缺點(diǎn)
public class Test{ public Test(){ } private static Test test = new Test(); public static Test getInstance(){ return test; } }
public class Test{ private static Test test = null; private Test(){ } public static Test getInstance(){ if(test==null){ test = new Test(); } return test; } }
第二種方式不需每次都創(chuàng)建一個(gè)類實(shí)例,而只是在第一次創(chuàng)建
8:簡(jiǎn)述什么是工廠模式,以及他解決的問(wèn)題,應(yīng)用的環(huán)境,解決的方案,模式的本質(zhì)
利用工廠來(lái)解決接口選擇的問(wèn)題的模式。
應(yīng)用環(huán)境:當(dāng)一個(gè)類無(wú)法預(yù)料要?jiǎng)?chuàng)建哪種類的對(duì)象或是一個(gè)類需要由子類來(lái)指定創(chuàng)建的對(duì)象時(shí),就需要用到工廠模式。
解決方案:定義一個(gè)創(chuàng)建對(duì)象的接口,讓子類來(lái)決定具體實(shí)例化哪一個(gè)類。
本質(zhì)就是根據(jù)不同的情況來(lái)選擇不同的接口。
9:代碼示例:工廠模式的實(shí)現(xiàn)方法
public class Factory{ public static Sample creator(int which){ if (which==1){ return new SampleA(); }else if (which==2) return new SampleB(); } } } Public class MyFactory{ Public static myFactory f = null; Public MyFactory(){ } Public static MyFactory getInstance(){ If(f==null){ F=new MyFactory(); } } Public DBDAO getDAO(){ Return new DBDAOImpl(); } }
10:述什么是值對(duì)象模式,以及他解決的問(wèn)題,應(yīng)用的環(huán)境,解決的方案,模式的本質(zhì)
用來(lái)把一組數(shù)據(jù)封裝成一個(gè)對(duì)象的模式。
解決問(wèn)題:在遠(yuǎn)程方法的調(diào)用次數(shù)增加的時(shí)候,相關(guān)的應(yīng)用程序性能將會(huì)有很大的下降。
解決方案:使用值對(duì)象的時(shí)候,可以通過(guò)僅僅一次方法調(diào)用來(lái)取得整個(gè)對(duì)象,而不是使用多次方法調(diào)用以得到對(duì)象中每個(gè)域的數(shù)值。
本質(zhì):就是把需要傳遞的多個(gè)值封裝成一個(gè)對(duì)象一次性傳過(guò)去。
11:代碼示例:值對(duì)象模式的實(shí)現(xiàn)方法
public class UserModel{ private String userId; private String userName; public void setUserId(String id){ this.userId = id; } public String getUserId(){ return userId; } public void setUserName(String name){ this.userName = name; } public String getUserName(){ return userName; } }
12:簡(jiǎn)述什么是DAO模式,以及他解決的問(wèn)題,應(yīng)用的環(huán)境,解決的方案,模式的本質(zhì)
DAO:數(shù)據(jù)訪問(wèn)對(duì)象
解決問(wèn)題:根據(jù)數(shù)據(jù)源不同,數(shù)據(jù)訪問(wèn)也不同。根據(jù)存儲(chǔ)的類型(關(guān)系數(shù)據(jù)庫(kù)、面向?qū)ο髷?shù)據(jù)庫(kù)、純文件等)和供應(yīng)商實(shí)現(xiàn)不同,持久性存儲(chǔ)(如數(shù)據(jù)庫(kù))的訪問(wèn)差別也很大。如何對(duì)存儲(chǔ)層以外的模塊屏蔽這些復(fù)雜性,以提供統(tǒng)一的調(diào)用存儲(chǔ)實(shí)現(xiàn)。程序的分布式問(wèn)題。
解決方案:是將數(shù)據(jù)訪問(wèn)邏輯抽象為特殊的資源,也就是說(shuō)將系統(tǒng)資源的接口從其底層訪問(wèn)機(jī)制中隔離出來(lái);通過(guò)將數(shù)據(jù)訪問(wèn)的調(diào)用打包,數(shù)據(jù)訪問(wèn)對(duì)象可以促進(jìn)對(duì)于不同數(shù)據(jù)庫(kù)類型和模式的數(shù)據(jù)訪問(wèn)。
DAO的本質(zhì):就是一層屏蔽一種變化。
本質(zhì):分層,是系統(tǒng)組件和數(shù)據(jù)源中間的適配器。(一層屏蔽一種變化)
13:代碼示例:DAO模式的實(shí)現(xiàn)方法
public interface CustomerDAO { public int insertCustomer(...); public Collection selectCustomersVO(...); }
14:什么是開(kāi)放-封閉法則(OCP)
可擴(kuò)展但是不可以更改已有的模塊
對(duì)擴(kuò)展是開(kāi)放的 對(duì)修改是封閉
15:什么是替換法則(LSP)
使用指向基類(超類)的引用的函數(shù),必須能夠在不知道具體派生類(子類)對(duì)象
類型的情況下使用
16:如何綜合使用我們學(xué)過(guò)的設(shè)計(jì)模式來(lái)構(gòu)建合理的應(yīng)用程序結(jié)構(gòu)
是采用接口進(jìn)行隔離,然后同時(shí)暴露值對(duì)象和工廠類,如果是需要數(shù)據(jù)存儲(chǔ)的功能,又會(huì)通過(guò)DAO 模式去與數(shù)據(jù)存儲(chǔ)層交互。
17:構(gòu)建常用的合理的Java應(yīng)用包結(jié)構(gòu)
Ui(表現(xiàn)層)
business--factory,ebi,ebo
dao--factory,dao,impl
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“Java設(shè)計(jì)模式面試題有哪些”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!