尚學堂【官網】-西安Java培訓|c++培訓|Android培訓|安卓培訓|java視頻教程|軟件工程師|-西安雁塔尚學堂計算機學校
Java教程  尚學堂首頁Java學院Java教程

Java設計模式面試題與答案 西安尚學堂

www.zyopwk.live 發布人:java  |  來自:本站  |  發布時間:2017-11-13 15:50:12  |  點擊次數:1033

1、 什么是設計模式?

就是經過實踐驗證的用來解決特定環境下特定問題的解決方案。

2、 設計模式用來干什么?

尋找合適的對象

決定對象的粒度

指定對象的接口

描述對象的實現

運用復用機制

重復使用經過實踐驗證的正確的,用來解決某一類問題的解決方案來達到減少工作量、提高正確率等目的

3、 什么是對象粒度

對象中方法的大小就是粒度

4、 基本的Java編程設計應遵循的規則?

面向接口編程,優先使用對象組合

5、 設計模式的應用范圍

所能解決的特定的一類問題中

6、 簡述什么是單例模式,以及解決的問題,應用的環境,解決的方案,應用時應注意什么?

解決的問題:在任何時間內只有一個類實例存在的模式。

應用環境:需要有一個從中進行全局訪問和維護某種類型數據的區域的環境下使用單例模式。

解決方案:保證一個類只有一個類實例存在。

本質:控制實例的數量。

注意:要合理的使用單例,避免單例成為瓶頸。

7、 代碼示例:單例模式的兩種實現方法,并說明優缺點

public class Test{

     private static Test test = new Test();

     public 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模式,以及他解決的問題,應用的環境,解決的方案,模式的本質

數據訪問對象

解決問題:根據數據源不同,數據訪問也不同。根據存儲的類型(關系數據庫、面向對象數據庫、純文件等)和供應商實現不同,持久性存儲(如數據庫)的訪問差別也很大。如何對存儲層以外的模塊屏蔽這些復雜性,以提供統一的調用存儲實現。程序的分布式問題

解決方案:將數據訪問邏輯抽象為特殊的資源,也就是說將系統資源的接口從其底層訪問機制中隔離出來;通過將數據訪問的調用打包,數據訪問對象可以促進對于不同數據庫類型和模式的數據訪問。

本質:分層,是系統組件和數據源中間的適配器。(一層屏蔽一種變化)

13、 代碼示例:DAO模式的實現方法

14、 什么是框架?框架的優點?

框架是能夠完成一定功能的半成品

1).優點:完成一定的功能、提供一個精良的應用程序架構

2).框架都是以接口的形式出現

3).應該了解框架完成的功能、框架的API接口、框架的功能是怎么實現的

15、 什么是開放-封閉法則(OCP)

可擴展但是不可以更改已有的模塊

對擴展是開放的,對修改是封閉

16、 什么是替換法則(LSP)

使用指向基類(超類)的引用的函數,必須能夠在不知道具體派生類(子類)對象類型的情況下使用。

17、 如何綜合使用我們學過的設計模式來構建合理的應用程序結構

是采用接口進行隔離,然后同時暴露值對象和工廠類,如果是需要數據存儲的功能,又會通過DAO 模式去與數據存儲層交互。

18、 構建常用的合理的Java應用包結構

Ui(表現層)

business--factory,ebi,ebo

dao--factory,dao,impl

當前文:Java設計模式面試題與答案 西安尚學堂
上一頁:編程新手該如何從零開始學習Java編程? 西安尚學堂
下一頁:JavaJVM類加載機制 西安尚學堂
在線報名(*為必填項)
云南快乐十分开奖走势图