面向接口編程在Java web 三層架構的應用與使用工廠模式解決問題

面向接口編程在Java web 三層架構的應用與使用工廠模式解決問題

爲什麼要面向接口編程:

在應用中,我們一般都是面向接口編程的,這樣有利於系統的擴展與移植。就像Java Web中的三層架構:展現層、業務邏輯層、數據持久層一樣,上層都是調用下層的接口。因爲一旦下層實現改變:比如持久層從數據庫操作更換爲文件操作,上層因爲調用下層的接口而不用更改任何代碼,利於系統擴展與移植。

面向接口編程的思路要點:

  舉一個例子,現在要添加一個用戶,數據持久層接口如下所示:

 

 

 

而其兩個實現分別如下:

一、數據庫實現代碼:

 

 

 

 

 

二、文件實現類代碼如下:

 

 

這樣業務邏輯層代碼如下所示:

 

面向接口編程的問題

這樣如果要使得用戶保存從數據庫更換爲文件,就要修改構造方法中的userInfoDao = new UserInfoDao4SQL();這一行代碼,這樣就有不符合修改擴展的原則,因爲一旦要更改實現,就要更改代碼。

面向接口編程問題的解決思路:

具體的做法是將要更改的代碼提取到配置文件裏,就如同數據庫的配置文件,這樣就可以直接修改配置文件,而不用修改代碼了。這裏我們介紹一種方法,叫做工廠模式方法,代碼如下:

 

 

配置文件InterfaceFactory.xml代碼如下:

 

InterfaceFactory採用dom4j來解析xml文件,然後在getBean()方法中使用反射機制Class.getName()來生成要採用的接口實現類。並且將實現類放在Map中,這樣以後要用到就直接從map中取,提高了效率。配置文件採用了數據庫實現,如果要採用文件實現則將配置文件轉換爲:

 

這樣業務邏輯層的代碼修改爲如下,這樣以後就可以不用修改代碼寫該配置文件即可完成:

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章