Dagger2神器入門(一)

前言

網(wǎng)上隨便搜索一下Dragger2,一大堆文章鋪天蓋地而來,一上來就講@Inject,@Module等注解是做什么的,解釋一大堆,看完之后一臉懵逼。對于剛剛?cè)腴TDagger的同學(xué)們來講,這樣的文章只會讓你覺得生無可戀,看完之后還是不知道怎么使用?

對于新的知識,我們首先要知道的是它是做什么的?能達(dá)到什么效果?然后自己寫一個demo去玩玩,待你能夠簡單使用之后再去看看這些文章,這樣對自己的信心能很大提高。而不是一上來就看一大堆的注解和注解相關(guān)的內(nèi)容,這樣繞著繞著,就把自己繞暈了。

針對這樣的一個詬病,我總結(jié)出來了Dragger相關(guān)的知識,供大家參考。

首先,如果想要學(xué)好dagger,就必須要了解什么是“依賴注入”,因為dagger2是實現(xiàn)依賴注入的一個框架。
然后,我們通過demo,一步一步的通過代碼來理解如何創(chuàng)造神一樣的效果;
最后,在我們了解了如何使用之后,就應(yīng)該了解一下原理了,apt、對象關(guān)系圖等等。

當(dāng)然,對于大部分人來講,知道如何使用就可以了,但是如果你想讓自己在面試中一騎絕塵,如果你想不斷提高自身技術(shù)水平的話,那就follow me,讓我們一起牛逼吧~~

學(xué)完dagger之后,你會發(fā)現(xiàn)像ButterKnife之類的apt框架,都有相似之處,學(xué)起來刷刷的;

從這系列文章中,你不但能夠?qū)W到Dagger相關(guān)的編程知識,還能學(xué)習(xí)到程序員最核心的競爭力,學(xué)習(xí)力。試想,你是愿意得到一條魚呢還是學(xué)習(xí)釣魚的方法呢?這系列文章,不但給你當(dāng)下想要的魚,解決燃眉之急;而且還能讓你長期有魚吃,何樂不為?

說了這么多,那讓我們來一趟dagger之旅吧。希望通過這系列文章,讓大家能夠收獲良多。

依賴注入

what?依賴注入是什么東東?現(xiàn)在假設(shè)這是你的盲點,通過第一反應(yīng)去解釋一些"依賴注入"。依賴:需要你,need you。注入:給你。連接起來的意思就是:給你需要的,give you what you need。比如,你要去上班,怎么去呢?開車去,那么可以說你依賴于車;但是你現(xiàn)在沒有車,于是你老爸給你買了一輛保時捷(有這樣的老爸還上班做啥?),給你上班所需要的車,這就是注入。連接起來就是典型的依賴注入。不懂?那我們通過代碼的來擼一擼。

//定義一輛車
public class Car {
}  
//定義一個人,這個人需要一輛車。
public class Person {
    Car car;

    public Person(Car car) {
      this.car = car;
      }
}

上面這種是在構(gòu)造Person的時候就注入了Car,因為Person一來Car,而構(gòu)造器正好可以注入Car。因此這是依賴注入的一種方式,除了通過構(gòu)造器注入(傳參)之外,我們還有什么方式呢?沒錯,set方法。

 public class Person {
    Car car;

 public Person(Car car) {
    this.car = car;
  }
//通過set方法將Car注入到Person類中
public void setCar(Car car){
    this.car = car;
  }
}

上面的代碼通過setter方法將Car注入到了Person類中。當(dāng)然除了上面的幾種方式之外,還有其他的方式,如接口。這里只要明白依賴注入就是這么個意思就ok。

那么,我們的Dagger2能給我們帶來什么呢?能達(dá)到什么效果呢?為什么要使用Dagger2呢?這一大堆問題我們將需要一個一個突破,弄懂一個問題之后,再進(jìn)行下一個問題,不然,講完之后,會讓你云里霧里。這也是我堅持多年的學(xué)習(xí)習(xí)慣。

public class Person {
  // dagger2直接使用@Inject
    @Inject
    Car car;

  public Person(Car car) {
    this.car = car;
  }

  public void setCar(Car car){
    this.car = car;
  }
}

Dagger2 帶給我們的效果就是直接使用@Inject注解,達(dá)到初始化目的。神奇吧?待我們學(xué)完之后,再回過頭來回答為什么要使用Dagger2?和前面的注入方式相比,有什么好處?
下面的我們將通過demo代碼形式來使用Dagger2,因為我們都是程序員,代碼勝過千言萬語~~

下一篇 Dagger2神器入門(二)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,326評論 25 708
  • 部分內(nèi)容參考自:[Android]使用Dagger 2依賴注入 - DI介紹(翻譯)[Android]使用Dagg...
    AItsuki閱讀 48,158評論 66 356
  • 文|峰語 不愿定義 不愿言語 不遠(yuǎn)提筆 只怕世人不解 人談?wù)軐W(xué) 如魚談?wù)撍?飛鳥談?wù)撎炜?哲學(xué)中某個點的共鳴產(chǎn)生了...
    代峰語閱讀 434評論 1 3
  • 武義王宅項山頭村有一株樹齡500多年的玉蘭樹,樹高數(shù)十米,胸徑須多人方能合抱,驚蜇前開花,一時滿樹繁...
    大樟樹67閱讀 255評論 0 0
  • 我們使用canvas繪制一個方形的方法是ctx.rect(left, top, width, height);現(xiàn)在...
    王恩智閱讀 3,143評論 0 2

友情鏈接更多精彩內(nèi)容