程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 面向對象編程依附注入詳解

面向對象編程依附注入詳解

編輯:關於JAVA

面向對象編程依附注入詳解。本站提示廣大學習愛好者:(面向對象編程依附注入詳解)文章只能為提供參考,不一定能成為您想要的結果。以下是面向對象編程依附注入詳解正文


說說依附注入

在面向對象編程中,我們常常處置處置的成績就是解耦,法式的耦合性越低注解這個法式的可讀性和可保護性越高。掌握反轉(Inversion of Control或IoC)就是經常使用的面向對象編程的設計准繩,應用這個准繩我們可以下降耦合性。個中依附注入是掌握反轉最經常使用的完成。

甚麼是依附

依附是法式中罕見的景象,好比類Car頂用到了GasEnergy類的實例energy,平日的做法就是在Car類中顯式地創立GasEnergy類的實例,並賦值給energy。以下面的代碼

interface Energy {
   
}
 
class GasEnergy implements Energy {
   
}
 
class Car {
 Energy energy = new GasEnergy();
}

存在成績

類Car承當了過剩的義務,擔任energy對象的創立,這必定存在了嚴重的耦合性。舉一個實際中的例子,一輛汽車應用哪一種動力不是由汽車來決議,而是由汽車制作商(CarMaker)來決議,這是汽車制作商的義務。

可擴大性,假定我們想修正動力為電動力,那末我們必定要修正Car這個類,顯著不相符開放閉合准繩。

晦氣於單位測試。

依附注入

依附注入是如許的一種行動,在類Car中不自動創立GasEnergy的對象,而是經由過程內部傳入GasEnergy對象情勢來設置依附。 經常使用的依附注入有以下三種方法

結構器注入

將須要的依附作為結構辦法的參數傳遞完成依附注入。

class Car {
 Energy mEnergy;
 public Car(Energy energy) {
   mEnergy = energy;
 }
}

Setter辦法注入

增長setter辦法,參數為須要注入的依附亦可完成依附注入。

class Car {
 Energy mEnergy;
   
 public void setEnergy(Energy energy) {
   mEnergy = energy;
 }
}

接口注入

接口注入,聞其名不問可知,就是為依附注入創立一套接口,依附作為參數傳入,經由過程挪用同一的接口完成對詳細完成的依附注入。

interface EnergyConsumerInterface {
 public void setEnergy(Energy energy);
}
 
class Car implements EnergyConsumerInterface {
 Energy mEnergy;
   
 public void setEnergy(Energy energy) {
   mEnergy = energy;
 }
}

接口注入和setter辦法注入相似,分歧的是接口注入應用了同一的辦法來完成注入,而setter辦法注入的辦法稱號絕對比擬隨便。

框架棄取

依附注入有許多框架,最著名的就是Guice,固然Spring也支撐依附注入。Guice采取的是運轉時讀取注解,經由過程反射的情勢生成依附並停止注入。這類情勢不太合適Android挪動裝備,究竟這些操作都在運轉時處置,對機能請求較高。

Dagger則是Android開辟合適的依附注入庫,其異樣采取類注解的情勢,分歧的是它是在編譯時生成幫助類,比及在運轉時應用生成的幫助類完成依附注入。

用照樣不消

其實注入框架用照樣不消,是一個成績,如若應用框架,則請求團隊每小我都要遵照解釋來編寫代碼處理依附注入。而這些框架其實也並不是很輕易就可以上手,進修系數絕對龐雜,難以控制,這也是須要斟酌的成績。

小我不雅點為不推舉也不否決應用這些框架,然則認為有些時刻我們寄願望於一個框架,不如日常平凡留意這些成績,工資防止未嘗不是對本身的一種根本請求呢?

依附查找

依附查找和依附注入一樣屬於掌握反轉准繩的詳細完成,分歧於依附注入的主動接收,依附查找這是自動要求,在須要的時刻經由過程挪用框架供給的辦法來獲得對象,獲得時須要供給相干的設置裝備擺設文件途徑、key等信息來肯定獲得對象的狀況。

以上就是對依附注入的材料具體引見,後續持續彌補相干材料,感謝年夜家對本站的支撐!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved