亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

說說依賴注入

在面向?qū)ο缶幊讨校覀兘?jīng)常處理處理的問題就是解耦,程序的耦合性越低表明這個(gè)程序的可讀性以及可維護(hù)性越高??刂品崔D(zhuǎn)(Inversion of Control或IoC)就是常用的面向?qū)ο缶幊痰脑O(shè)計(jì)原則,使用這個(gè)原則我們可以降低耦合性。其中依賴注入是控制反轉(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對(duì)象的創(chuàng)建,這必然存在了嚴(yán)重的耦合性。舉一個(gè)現(xiàn)實(shí)中的例子,一輛汽車使用哪種能源不是由汽車來決定,而是由汽車制造商(CarMaker)來決定,這是汽車制造商的責(zé)任。

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

不利于單元測(cè)試。

依賴注入

依賴注入是這樣的一種行為,在類Car中不主動(dòng)創(chuàng)建GasEnergy的對(duì)象,而是通過外部傳入GasEnergy對(duì)象形式來設(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)一的接口完成對(duì)具體實(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方法注入的方法名稱相對(duì)比較隨意。

框架取舍

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

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

用還是不用

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

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

依賴查找

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

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

相關(guān)文章

  • Java設(shè)計(jì)實(shí)現(xiàn)一個(gè)針對(duì)各種類型的緩存

    Java設(shè)計(jì)實(shí)現(xiàn)一個(gè)針對(duì)各種類型的緩存

    這篇文章主要為大家詳細(xì)介紹了Java如何設(shè)計(jì)實(shí)現(xiàn)一個(gè)針對(duì)各種類型的緩存,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以了解一下
    2023-11-11
  • Java操作Excel文件解析與讀寫方法詳解

    Java操作Excel文件解析與讀寫方法詳解

    相信現(xiàn)在很多搞后端的同學(xué)大部分做的都是后臺(tái)管理系統(tǒng),那么管理系統(tǒng)就肯定免不了Excel的導(dǎo)出導(dǎo)入功能,下面這篇文章主要給大家介紹了關(guān)于Java簡(jiǎn)單使用EasyExcel操作讀寫與解析的步驟與要點(diǎn),需要的朋友可以參考下
    2022-11-11
  • java字符串中常用的十個(gè)方法總結(jié)

    java字符串中常用的十個(gè)方法總結(jié)

    String類中提供了豐富的用于操作字符串的方法,下面這篇文章主要給大家介紹了關(guān)于java字符串中常用的十個(gè)方法,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-01-01
  • Java實(shí)現(xiàn)把窗體隱藏到系統(tǒng)托盤方法

    Java實(shí)現(xiàn)把窗體隱藏到系統(tǒng)托盤方法

    這篇文章主要介紹了Java實(shí)現(xiàn)把窗體隱藏到系統(tǒng)托盤方法,本文直接給出核心功能代碼,需要的朋友可以參考下
    2015-05-05
  • Java中Switch的使用方法及新特性

    Java中Switch的使用方法及新特性

    在java中控制流程語句是由選擇語句、循環(huán)語句、跳轉(zhuǎn)語句構(gòu)成,選擇語句包括if和switch,在過多的使用if語句嵌套會(huì)使程序很難閱讀,這時(shí)就可以用到switch語句,這篇文章主要給大家介紹了關(guān)于Java中Switch的使用方法及新特性的相關(guān)資料,需要的朋友可以參考下
    2023-11-11
  • java使用pdfbox操作pdf文件示例

    java使用pdfbox操作pdf文件示例

    有時(shí)候PDF中的文字無法復(fù)制,這可能是因?yàn)镻DF文件加密了,不過使用PDFBox開源軟件就可以把它讀出來,下面是使用示例
    2014-03-03
  • jvm oom排查記錄剖析

    jvm oom排查記錄剖析

    這篇文章主要為大家介紹了jvm oom排查記錄剖析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • MapStruct到底是什么?

    MapStruct到底是什么?

    今天給大家?guī)淼氖顷P(guān)于Java的相關(guān)知識(shí),文中圍繞MapStruct到底是什么展開,文中有非常詳細(xì)的解釋及代碼示例,需要的朋友可以參考下
    2021-06-06
  • Java從數(shù)據(jù)庫(kù)中讀取Blob對(duì)象圖片并顯示的方法

    Java從數(shù)據(jù)庫(kù)中讀取Blob對(duì)象圖片并顯示的方法

    這篇文章主要介紹了Java從數(shù)據(jù)庫(kù)中讀取Blob對(duì)象圖片并顯示的方法,實(shí)例分析了Java讀取數(shù)據(jù)庫(kù)中Blob對(duì)象圖片的技巧與操作方法,需要的朋友可以參考下
    2015-02-02
  • Spring?Boot?RestController接口輸出到終端的操作代碼

    Spring?Boot?RestController接口輸出到終端的操作代碼

    這篇文章主要介紹了Spring?Boot?RestController接口如何輸出到終端,使用?HttpServletResponse?類,可以在使用curl執(zhí)行?Spring?Boot?REST接口的同時(shí),在控制臺(tái)輸出一些信息,給運(yùn)維人員知道當(dāng)前命令執(zhí)行的狀態(tài),感興趣的朋友跟隨小編一起看看吧
    2023-09-09

最新評(píng)論