前言
網(wǎng)上隨便搜索一下Dragger2奕扣,一大堆文章鋪天蓋地而來,一上來就講@Inject扁达,@Module等注解是做什么的正卧,解釋一大堆,看完之后一臉懵逼跪解。對于剛剛?cè)腴TDagger的同學(xué)們來講炉旷,這樣的文章只會讓你覺得生無可戀,看完之后還是不知道怎么使用叉讥?
對于新的知識窘行,我們首先要知道的是它是做什么的?能達到什么效果图仓?然后自己寫一個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能給我們帶來什么呢院崇?能達到什么效果呢肆氓?為什么要使用Dagger2呢?這一大堆問題我們將需要一個一個突破底瓣,弄懂一個問題之后谢揪,再進行下一個問題,不然捐凭,講完之后拨扶,會讓你云里霧里。這也是我堅持多年的學(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注解患民,達到初始化目的。神奇吧垦梆?待我們學(xué)完之后匹颤,再回過頭來回答為什么要使用Dagger2仅孩?和前面的注入方式相比,有什么好處惋嚎?
下面的我們將通過demo代碼形式來使用Dagger2杠氢,因為我們都是程序員敬拓,代碼勝過千言萬語~~
下一篇 Dagger2神器入門(二)