Android依賴注入框架選型

說到Android依賴注入框架,網上比較推崇的是google維護的Dagger2框架,使用依賴注入能夠帶來如下好處: 一、依賴的注入和配置獨立於組件以外。二、由於對象是在一個獨立、不耦合的地方初始化,因此當注入抽象方法的時候,咱們只須要修改對象的實現方法,而不用大改代碼庫。三、依賴能夠注入到一個組件中:咱們能夠注入這些依賴的模擬實現,這樣使得測試更加簡單。Dagger2能夠免去在每一個使用類的地方都使用構造函數構造一個實例,使用@Inject註解可實現類實例的依賴注入,依賴的構建分別支持@Provide、@module註解,用於構建自定義的類和第三方類,並使用@Scope註解來聲明依賴的做用域,能夠跟acitvity的聲明週期綁定在一塊兒,在須要的地方自動實現單例模式。寫到此處可見Dagger2框架提供的功能很強大,能夠幫助咱們的代碼進行很好的解耦,可是若是把他實施到具體的項目當中,你會發現事情並無想象中那麼便利,並且咱們的工做量增長了:android

應用中每一個頁面的須要依賴注入的地方都須要寫一份模板代碼來實現,比較繁瑣。並且若是咱們的項目是多module工程,須要建立不少Component類,不能放到library中去實現,由於這會涉及到module工程循環引用的問題。咱們平時開發的工做量主要來源於業務需求,須要建立不少新的頁面,這時候不單單要考慮代碼怎麼作到低耦合,代碼的高內聚也是很重要的,這有助於減小代碼量和測試的工做量。由此想到是否能夠把依賴注入的過程放到Activity或者Fragment的基類中去實現,好比將MVP代碼框架裏面的presenter放到基類中去注入,咱們去實現每一個具體的頁面的時候去擴展這個基類便可,不須要再在每一個擴展類中去寫這些模板代碼。 RoboGuice是一種比Dagger使用更簡易的依賴注入框架,他不須要定義各類Component注射器,直接經過 RoboGuice.getInjector()就能夠拿到注射器,支持視圖、資源、系統服務、對象等注入,而且能夠經過註解來實現單例模式,基本能實現dagger提供的功能,很是適合MVP框架,能夠在Activity或者Fragment的基類去實現presenter的注入:

筆者很是推薦你們使用這套框架! 若是項目使用kotlin語言則有更多的選擇,kodein框架是一個不錯的選擇:

只要在你的Module中綁定須要的實例構造方法,在須要用到該實例的頁面經過by instance()的調用去實現依賴的檢索:

更多用法能夠上 官網查看: github demo
相關文章
相關標籤/搜索