前言
網上隨便搜索一下Dragger2,一大堆文章鋪天蓋地而來,一上來就講@Inject,@Module等注解是做什么的,解釋一大堆,看完之后一臉懵逼。對于剛剛入門Dagger的同學們來講,這樣的文章只會讓你覺得生無可戀,看完之后還是不知道怎么使用?
對于新的知識,我們首先要知道的是它是做什么的?能達到什么效果?然后自己寫一個demo去玩玩,待你能夠簡單使用之后再去看看這些文章,這樣對自己的信心能很大提高。而不是一上來就看一大堆的注解和注解相關的內容,這樣繞著繞著,就把自己繞暈了。
針對這樣的一個詬病,我總結出來了Dragger相關的知識,供大家參考。
首先,如果想要學好dagger,就必須要了解什么是“依賴注入”,因為dagger2是實現依賴注入的一個框架。
然后,我們通過demo,一步一步的通過代碼來理解如何創造神一樣的效果;
最后,在我們了解了如何使用之后,就應該了解一下原理了,apt、對象關系圖等等。
當然,對于大部分人來講,知道如何使用就可以了,但是如果你想讓自己在面試中一騎絕塵,如果你想不斷提高自身技術水平的話,那就follow me,讓我們一起牛逼吧~~
學完dagger之后,你會發現像ButterKnife之類的apt框架,都有相似之處,學起來刷刷的;
從這系列文章中,你不但能夠學到Dagger相關的編程知識,還能學習到程序員最核心的競爭力,學習力。試想,你是愿意得到一條魚呢還是學習釣魚的方法呢?這系列文章,不但給你當下想要的魚,解決燃眉之急;而且還能讓你長期有魚吃,何樂不為?
說了這么多,那讓我們來一趟dagger之旅吧。希望通過這系列文章,讓大家能夠收獲良多。
依賴注入
what?依賴注入是什么東東?現在假設這是你的盲點,通過第一反應去解釋一些"依賴注入"。依賴:需要你,need you。注入:給你。連接起來的意思就是:給你需要的,give you what you need。比如,你要去上班,怎么去呢?開車去,那么可以說你依賴于車;但是你現在沒有車,于是你老爸給你買了一輛保時捷(有這樣的老爸還上班做啥?),給你上班所需要的車,這就是注入。連接起來就是典型的依賴注入。不懂?那我們通過代碼的來擼一擼。
//定義一輛車
public class Car {
}
//定義一個人,這個人需要一輛車。
public class Person {
Car car;
public Person(Car car) {
this.car = car;
}
}
上面這種是在構造Person的時候就注入了Car,因為Person一來Car,而構造器正好可以注入Car。因此這是依賴注入的一種方式,除了通過構造器注入(傳參)之外,我們還有什么方式呢?沒錯,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類中。當然除了上面的幾種方式之外,還有其他的方式,如接口。這里只要明白依賴注入就是這么個意思就ok。
那么,我們的Dagger2能給我們帶來什么呢?能達到什么效果呢?為什么要使用Dagger2呢?這一大堆問題我們將需要一個一個突破,弄懂一個問題之后,再進行下一個問題,不然,講完之后,會讓你云里霧里。這也是我堅持多年的學習習慣。
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注解,達到初始化目的。神奇吧?待我們學完之后,再回過頭來回答為什么要使用Dagger2?和前面的注入方式相比,有什么好處?
下面的我們將通過demo代碼形式來使用Dagger2,因為我們都是程序員,代碼勝過千言萬語~~
下一篇 Dagger2神器入門(二)