您好,登錄后才能下訂單哦!
這篇文章主要介紹了Java設計模式面試題有哪些,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
1:什么是設計模式?
就是經過實踐驗證的用來解決特定環境下特定問題的解決方案
2:設計模式用來干什么?
尋找合適的對象
決定對象的粒度
指定對象的接口
描述對象的實現
運用復用機制
重復使用經過實踐驗證的正確的,用來解決某一類問題的解決方案來達到減少
工作量、提高正確率等目的。
3:什么是對象粒度
對象中方法的多少就是粒度
4:基本的Java編程設計應遵循的規則?
面向接口編程,優先使用對象組合
5:設計模式的應用范圍
所能解決的特定的一類問題中
6:簡述什么是單例模式,以及他解決的問題,應用的環境,解決的方案,模式的本質?
在任何時間內只有一個類實例存在的模式。
需要有一個從中進行全局訪問和維護某種類型數據的區域的環境下使用單例模式。
解決方案就是保證一個類只有一個類實例存在。
本質就是實例共用同一塊內存區域。
7:代碼示例:單例模式的兩種實現方法,并說明優缺點
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; } }
第二種方式不需每次都創建一個類實例,而只是在第一次創建
8:簡述什么是工廠模式,以及他解決的問題,應用的環境,解決的方案,模式的本質
利用工廠來解決接口選擇的問題的模式。
應用環境:當一個類無法預料要創建哪種類的對象或是一個類需要由子類來指定創建的對象時,就需要用到工廠模式。
解決方案:定義一個創建對象的接口,讓子類來決定具體實例化哪一個類。
本質就是根據不同的情況來選擇不同的接口。
9:代碼示例:工廠模式的實現方法
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:述什么是值對象模式,以及他解決的問題,應用的環境,解決的方案,模式的本質
用來把一組數據封裝成一個對象的模式。
解決問題:在遠程方法的調用次數增加的時候,相關的應用程序性能將會有很大的下降。
解決方案:使用值對象的時候,可以通過僅僅一次方法調用來取得整個對象,而不是使用多次方法調用以得到對象中每個域的數值。
本質:就是把需要傳遞的多個值封裝成一個對象一次性傳過去。
11:代碼示例:值對象模式的實現方法
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:簡述什么是DAO模式,以及他解決的問題,應用的環境,解決的方案,模式的本質
DAO:數據訪問對象
解決問題:根據數據源不同,數據訪問也不同。根據存儲的類型(關系數據庫、面向對象數據庫、純文件等)和供應商實現不同,持久性存儲(如數據庫)的訪問差別也很大。如何對存儲層以外的模塊屏蔽這些復雜性,以提供統一的調用存儲實現。程序的分布式問題。
解決方案:是將數據訪問邏輯抽象為特殊的資源,也就是說將系統資源的接口從其底層訪問機制中隔離出來;通過將數據訪問的調用打包,數據訪問對象可以促進對于不同數據庫類型和模式的數據訪問。
DAO的本質:就是一層屏蔽一種變化。
本質:分層,是系統組件和數據源中間的適配器。(一層屏蔽一種變化)
13:代碼示例:DAO模式的實現方法
public interface CustomerDAO { public int insertCustomer(...); public Collection selectCustomersVO(...); }
14:什么是開放-封閉法則(OCP)
可擴展但是不可以更改已有的模塊
對擴展是開放的 對修改是封閉
15:什么是替換法則(LSP)
使用指向基類(超類)的引用的函數,必須能夠在不知道具體派生類(子類)對象
類型的情況下使用
16:如何綜合使用我們學過的設計模式來構建合理的應用程序結構
是采用接口進行隔離,然后同時暴露值對象和工廠類,如果是需要數據存儲的功能,又會通過DAO 模式去與數據存儲層交互。
17:構建常用的合理的Java應用包結構
Ui(表現層)
business--factory,ebi,ebo
dao--factory,dao,impl
感謝你能夠認真閱讀完這篇文章,希望小編分享的“Java設計模式面試題有哪些”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。