一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務(wù)器之家 - 編程語言 - JAVA教程 - 面向?qū)ο缶幊桃蕾囎⑷朐斀?

面向?qū)ο缶幊桃蕾囎⑷朐斀?/h1>

2020-06-09 11:50java教程網(wǎng) JAVA教程

本文主要介紹面向?qū)ο缶幊桃蕾囎⑷氲闹R資料,這里對依賴注入的資料做了詳細(xì)介紹,有興趣的小伙伴可以參考下

說說依賴注入

在面向?qū)ο缶幊讨校覀兘?jīng)常處理處理的問題就是解耦,程序的耦合性越低表明這個程序的可讀性以及可維護(hù)性越高。控制反轉(zhuǎn)(Inversion of Control或IoC)就是常用的面向?qū)ο缶幊痰脑O(shè)計原則,使用這個原則我們可以降低耦合性。其中依賴注入是控制反轉(zhuǎn)最常用的實現(xiàn)。

什么是依賴

依賴是程序中常見的現(xiàn)象,比如類Car中用到了GasEnergy類的實例energy,通常的做法就是在Car類中顯式地創(chuàng)建GasEnergy類的實例,并賦值給energy。如下面的代碼

?
1
2
3
4
5
6
7
8
9
10
11
interface Energy {
   
}
 
class GasEnergy implements Energy {
   
}
 
class Car {
 Energy energy = new GasEnergy();
}

存在問題

類Car承擔(dān)了多余的責(zé)任,負(fù)責(zé)energy對象的創(chuàng)建,這必然存在了嚴(yán)重的耦合性。舉一個現(xiàn)實中的例子,一輛汽車使用哪種能源不是由汽車來決定,而是由汽車制造商(CarMaker)來決定,這是汽車制造商的責(zé)任。

可擴展性,假設(shè)我們想修改能源為電動力,那么我們必然要修改Car這個類,明顯不符合開放閉合原則。

不利于單元測試。

依賴注入

依賴注入是這樣的一種行為,在類Car中不主動創(chuàng)建GasEnergy的對象,而是通過外部傳入GasEnergy對象形式來設(shè)置依賴。 常用的依賴注入有如下三種方式

構(gòu)造器注入

將需要的依賴作為構(gòu)造方法的參數(shù)傳遞完成依賴注入。

?
1
2
3
4
5
6
class Car {
 Energy mEnergy;
 public Car(Energy energy) {
   mEnergy = energy;
 }
}

Setter方法注入

增加setter方法,參數(shù)為需要注入的依賴亦可完成依賴注入。

?
1
2
3
4
5
6
7
class Car {
 Energy mEnergy;
   
 public void setEnergy(Energy energy) {
   mEnergy = energy;
 }
}

接口注入

接口注入,聞其名不言而喻,就是為依賴注入創(chuàng)建一套接口,依賴作為參數(shù)傳入,通過調(diào)用統(tǒng)一的接口完成對具體實現(xiàn)的依賴注入。

?
1
2
3
4
5
6
7
8
9
10
11
interface EnergyConsumerInterface {
 public void setEnergy(Energy energy);
}
 
class Car implements EnergyConsumerInterface {
 Energy mEnergy;
   
 public void setEnergy(Energy energy) {
   mEnergy = energy;
 }
}

接口注入和setter方法注入類似,不同的是接口注入使用了統(tǒng)一的方法來完成注入,而setter方法注入的方法名稱相對比較隨意。

框架取舍

依賴注入有很多框架,最有名的就是Guice,當(dāng)然Spring也支持依賴注入。Guice采用的是運行時讀取注解,通過反射的形式生成依賴并進(jìn)行注入。這種形式不太適合Android移動設(shè)備,畢竟這些操作都在運行時處理,對性能要求較高。

Dagger則是Android開發(fā)適合的依賴注入庫,其同樣采用類注解的形式,不同的是它是在編譯時生成輔助類,等到在運行時使用生成的輔助類完成依賴注入。

用還是不用

其實注入框架用還是不用,是一個問題,如若使用框架,則要求團隊每一個人都要遵守說明來編寫代碼解決依賴注入。而這些框架其實也并非很容易就能上手,學(xué)習(xí)系數(shù)相對復(fù)雜,難以掌握,這也是需要考慮的問題。

個人觀點為不推薦也不反對使用這些框架,但是覺得有些時候我們寄希望于一個框架,不如平時注意這些問題,人為避免何嘗不是對自己的一種基本要求呢?

依賴查找

依賴查找和依賴注入一樣屬于控制反轉(zhuǎn)原則的具體實現(xiàn),不同于依賴注入的被動接受,依賴查找這是主動請求,在需要的時候通過調(diào)用框架提供的方法來獲取對象,獲取時需要提供相關(guān)的配置文件路徑、key等信息來確定獲取對象的狀態(tài)。

以上就是對依賴注入的資料詳細(xì)介紹,后續(xù)繼續(xù)補充相關(guān)資料,謝謝大家對本站的支持!

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 高清在线一区二区 | 国产伦精品一区二区三区免费观看 | 国产精品毛片高清在线完整版 | 2020年精品国产午夜福利在线 | 忘忧草高清 | 大香线一本| 男人捅女人动漫 | 成年私人影院免费视频网站 | 91chinese 永久免费 | 高清国产激情视频在线观看 | 性色xxx | 日本免费一区二区三区a区 日本免费三片在线观看 | 特黄特黄一级片 | 欧美日韩一区二区三在线 | 精品九九视频 | 欧美vpswindowssex| 成人快手破解版 | 好大好硬好深好爽想要小雪 | 欧美视频网址 | 久久视频在线视频观看天天看视频 | 国产一及毛片 | 欧美日日操 | 极品妖艳许清赵丽全文免费阅读 | 91视频99| 日本中文字幕一区二区高清在线 | 男同精品视频免费观看网站 | 四虎影视永久免费视频观看 | 日本特级a禁片在线播放 | 日韩欧美高清一区 | 亚洲激情网站 | 国产一级毛片潘金莲的奶头 | 欧美精品国产一区二区三区 | 69日本xxxx| 肉肉小说在线阅读 | 亚洲 欧美 国产 日韩 字幕 | 国产精品久久久久久爽爽爽 | 国产精品www视频免费看 | 欧洲男同直粗无套播放视频 | 国产日韩欧美色视频色在线观看 | 日本高清二三四本2021 | sxx免费看视频在线播放 |