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

今天給你們介紹的是面向接口編程:mysql

首先須要知道爲何要面向接口編程,會給咱們帶來什麼好處,在寫這篇文章以前,我也看過不少博客跟帖子上的介紹,不過說句實話講解的很通常,其實面向接口編程的最主要兩個字在接口上,接口帶來的好處就是下降耦合性(解耦);可能一些人不太瞭解這個詞,我來用一個實例作介紹:sql

如今我有兩個類代碼以下數據庫

public class Dao{編程

  public User findByName(String username){設計模式

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

  }eclipse

  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設計模式不要錯過,最近一直在學習人工智能,有學友歡迎一塊兒探討。

相關文章
相關標籤/搜索