當涉及到Android上的依賴注入(DI)類庫的時候,存在不少的選擇,但怎麼知道哪一個最適合你呢?當差別很細微的時候,看一看別人為什麼中意一種或者另一種方案或許是很有用的。
Dagger
在他的關於DI新系列的第一部分中, Antonio Leiva稱讚了一個叫做Dagger的框架。在開始的時候他總體概述了一下DI-它是什麼,解決了哪方面的問題,人們獲得了什麼好處-並提供了一個研究依賴注入的簡單方式。
> 我們可以把它當做應用中的一個模組, 負責為其它模組提供例項並且注入依賴關係。那是它的基本職責。模組的建立位於我們應用中的一個點上,這樣我們可以擁有完全的控制權。
Dagger Leiva說,特別適合用在低端裝置上,因為它沒有采取反射而使用了預編譯技術,因為基於反射的DI非常佔用資源和耗時。Dagger或許不是最理想的依賴注入框架,但Leiva認為,它是最高效的。
RoboGuice
Paresh Mayani在文章做一個懶惰但高效的Android開發者中,深入的講解了Android DI框架-Dagger,還有ButterKnife和Android Annotation (AA) -但只充分探討了基於Google Guice類庫的RoboGuice,Mayani提供了大量RoboGuice的快速和實用資源,包括:
- 註解使用的演示
- 安裝提示
- 完整的Activity示例
- 使用技巧
- RoboGuice的優點
- 與ActionBarSherlock整合
總體而言,Mayani認為RoboGuice節約了大量的時間。較少的程式碼意味著較少的錯誤,較少的樣板程式碼意味著可以把更多的時間放到應用的核心邏輯上。
ButterKnife
顯然,Jake Wharton喜歡ButterKnife。但是對於外界的意見,Harsha Vardhan 將ButterKnife和RoboGuice進行了比較。Vardhan提供了一個有用的表格來比較各自的特點,例如:
- 所需的最少jar包
- 與ActionBarSherlock的相容性
- 單擊監聽器的注入
- POJO注入
- 效能
Vardhan不贊成固定的使用一種或者另一種方案,相反,他建議要仔細考慮每一個專案的具體需求。
> 哪一個是最好的依賴注入框架
> 這完全取決於專案的使用
此外,Vardhan警告說,DI框架沒有針對移動環境進行優化,再一次,所有的事物都不完美。
結論
與其他大多數的開發解決方案一樣,每種方案都有優點和缺點,而且必須符合個人的需要。Leiva, Mayani和Vardhan給Android開發者講解了3種DI解決方案(還有更多的提示),所以如果你正在尋找一個起點,那麼就去那裡看看。
那些全新的DI,順便說一句,這3個博主都說出了關於DI的自己的觀點,並下了自己的定義-這對於尋找更多風格解釋的人來說是非常有用的資源。