java中的面向接口編程(技術分享)


今天給大家介紹的是面向接口編程:

首先需要知道為什么要面向接口編程,會給我們帶來什么好處,在寫這篇文章之前,我也看過很多博客跟帖子上的介紹,不過說句實話講解的很一般,其實面向接口編程的最主要兩個字在接口上,接口帶來的好處就是降低耦合性(解耦);可能一些人不太了解這個詞,我來用一個實例做介紹:

現在我有兩個類代碼如下

public class Dao{

  public User findByName(String username){

    //這個方法實現的是去excel中查找username這個用戶

  }

  public void addUser(User form){//這是一個向excel寫入的數據(當然你要熟悉poi技術,如果是xml就需要熟悉dom4技術),添加用戶的方法實現}

}

public class Service{

  Dao  dao = new Dao();

  public void login(User form){//這是一個模擬的登錄方法依賴的是Dao類中的兩個方法}

}

如果現在我們公司決定不在使用excel作為數據存儲設備,而是換成效率更高的數據庫;

其實問題大家都知道了,如果要修改代碼,我們就需要重新做測試,這會消耗很大的成本,那么我們就需要在不修改代碼的基礎上完成需求;

從而引出了Spring之父的理念面向接口編程,即InterfaceDao  dao = new Dao();即使這樣大家還是發現代碼還是死的,還需要去new對象,雖然這個接口InterfaceDao{

  findByName(String username);

  addUser(User form);

}有了,但是仍然沒有滿足我們的需要;

這里給大家介紹一種設計模式,————工廠設計模式:

我們不需要通過new來獲取對象,而是通過工廠幫我們生產一個對象,其底層依賴的反射原理,代碼如下

 

配置文件一定要放在類路徑下,如果是eclipse就是src下面,否則加載不到,user.properties為配置文件名,內容是鍵值對,(我的習慣鍵用)接口名=(包名別丟)實現類名;

由此,我們Service類中的代碼變成了——InterfaceDao  dao = UserDaoFactory.getUserDao()

到此我們無論我們怎么修改Dao類中的代碼,都不用修改Service中代碼;只需要修改user.proerpties配置文件;

下面我們實現一個Dao類用mysql數據庫代碼如下:

 

addUser(User form)方法就自己實現吧,如果有問題可以關注博客,這個類就完成了,只要修改掉user.properties中的配置類,就可以實現數據庫與excel之間的切換,達到解耦的目的;歡迎隨時提問,下一期會分享MVC設計模式不要錯過,最近一直在學習人工智能,有學友歡迎一起探討。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM