最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

面向?qū)ο缶幊桃蕾囎⑷朐斀?/h1>
 更新時間:2016年08月31日 11:18:58   投稿:lqh  
本文主要介紹面向?qū)ο缶幊桃蕾囎⑷氲闹R資料,這里對依賴注入的資料做了詳細(xì)介紹,有興趣的小伙伴可以參考下

說說依賴注入

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

什么是依賴

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

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)實(shí)中的例子,一輛汽車使用哪種能源不是由汽車來決定,而是由汽車制造商(CarMaker)來決定,這是汽車制造商的責(zé)任。

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

不利于單元測試。

依賴注入

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

構(gòu)造器注入

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

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

Setter方法注入

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

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

接口注入

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

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采用的是運(yùn)行時讀取注解,通過反射的形式生成依賴并進(jìn)行注入。這種形式不太適合Android移動設(shè)備,畢竟這些操作都在運(yùn)行時處理,對性能要求較高。

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

用還是不用

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

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

依賴查找

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

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

相關(guān)文章

  • Java 使用Socket正確讀取數(shù)據(jù)姿勢

    Java 使用Socket正確讀取數(shù)據(jù)姿勢

    這篇文章主要介紹了Java 使用Socket正確讀取數(shù)據(jù)姿勢,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • 解決java idea新建子目錄時命名不是樹形結(jié)構(gòu)的問題

    解決java idea新建子目錄時命名不是樹形結(jié)構(gòu)的問題

    這篇文章主要介紹了解決java idea新建子目錄時命名不是樹形結(jié)構(gòu)的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • 關(guān)于Java?float和double精度范圍大小

    關(guān)于Java?float和double精度范圍大小

    這篇文章主要介紹了關(guān)于Java?float和double精度范圍大小,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • java微信公眾號發(fā)送消息模板

    java微信公眾號發(fā)送消息模板

    這篇文章主要為大家詳細(xì)介紹了java微信公眾號發(fā)送消息模板,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • Java注解使用及原理解析

    Java注解使用及原理解析

    這篇文章主要介紹了Java注解使用及原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-06-06
  • Java并發(fā)編程中的volatile關(guān)鍵字詳解

    Java并發(fā)編程中的volatile關(guān)鍵字詳解

    這篇文章主要介紹了Java并發(fā)編程中的volatile關(guān)鍵字詳解,volatile?用于保證我們某個變量的可見性,使其一直存放在主存中,不被移動到某個線程的私有工作內(nèi)存中,需要的朋友可以參考下
    2023-08-08
  • 用java實(shí)現(xiàn)冒泡排序算法

    用java實(shí)現(xiàn)冒泡排序算法

    兩兩比較待排序記錄的關(guān)鍵字,發(fā)現(xiàn)兩個記錄的次序相反時即進(jìn)行交換,直到?jīng)]有反序的記錄為止
    2013-01-01
  • java如何完成輸出語句實(shí)例詳解

    java如何完成輸出語句實(shí)例詳解

    輸入輸出可以說是計算機(jī)的基本功能,下面這篇文章主要給大家介紹了關(guān)于java如何完成輸出語句的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-01-01
  • 如何在Spring中自定義scope的方法示例

    如何在Spring中自定義scope的方法示例

    這篇文章主要介紹了如何在Spring中自定義scope的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-02-02
  • 在SpringBoot項目中實(shí)現(xiàn)給所有請求加固定前綴

    在SpringBoot項目中實(shí)現(xiàn)給所有請求加固定前綴

    這篇文章主要介紹了在SpringBoot項目中實(shí)現(xiàn)給所有請求加固定前綴,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02

最新評論

泸定县| 舟山市| 遂川县| 大同县| 陆河县| 江安县| 高要市| 渝中区| 潮安县| 望城县| 武冈市| 平乡县| 桂林市| 高邑县| 德昌县| 滦南县| 邛崃市| 渝北区| 家居| 商南县| 监利县| 樟树市| 磴口县| 同江市| 额济纳旗| 龙门县| 随州市| 城口县| 永兴县| 日喀则市| 襄城县| 忻城县| 巧家县| 称多县| 荔波县| 怀远县| 辽阳市| 铁力市| 油尖旺区| 麻阳| 龙里县|