依賴注入之Dagger2初探
Dagger2
Dagger2是Google提供的依賴注入框架,依賴注入為Android中元件之間的解耦提供了很好的解決方案。Dagger2已經在越來越多的開源專案中被使用,其已經發展成為未來的一個技術趨勢。
為什麼要使用Dagger2
MVP設計模式中,M層提供資料,V層做介面展示,而P層則成為M和V的橋樑,這其中就必然涉及到M和V的互動及處理,如果業務複雜或者多個頁面共用,它還是面臨著高度的耦合性。如果需求發生變動,必然需要更改P中的內容。而在MVP中,我們通常在activity層中需要拿到p層的物件,那麼在開發中有可能我們很多activity或者fragment都可能需要拿到這個p層物件的例項,假如我們P層類的構造發生變化我們要在很多地方都得進行修改,這就是耦合度太高的弊端。為了解決這種耦合性的問題,有一幫牛叉的人就思索著:能不能有個容器,這個容器在我們需要用到某個物件的時候幫我們建立好需要的物件,像物件工廠一樣,並且幫我們管理這些物件。當發生變化時,我們只需要換一個容器就可以了。就這樣,dagger2應運而生。
dagger2中組成內容的對應關係:
類Module:裝載物件的容器。
介面Component:存放這些容器的倉庫。
註解Provides:該容器建立物件的動作。
註解Inject:從容器中取出這個物件的動作。
註解Qualifier:用來給Inject和Provides貼上關聯標籤。如果一個物件可以由多個容器提供,這時候就需要用Qualifier進行標籤關聯。
註解Scope:從容器取出物件的有效期,即生命週期。
如何使用Dagger2
1.增加Dagger2依賴包
dependencies {
implementation 'com.google.dagger:dagger:2.13'
annotationProcessor 'com.google.dagger:dagger-compiler:2.13'
compileOnly 'org.glassfish:javax.annotation:10.0-b28'
}
2.編寫Module
@Module
public class LoginModule {
@ActivityScope
@Provides
LoginPresenter getPresenter() {return new LoginPresenter();}}
3.編寫Component
@ActivityScope
@Component(modules = {LoginModule.class})
public interface LoginComponent {
void inject(LoginActivity activity);
}
4.編譯一下工程
AndroidStudio -> Build -> Make Project
5.依賴注入
@Override
protected void onResume({
super.onResume();
DaggerLoginComponent.builder().build().inject(this);
mPresenter.attachV(this);
}
Demo工程
相關文章
- Dagger2 知識梳理(1) Dagger2 依賴注入的兩種方式依賴注入
- .NET之預設依賴注入依賴注入
- angular依賴注入Angular依賴注入
- XUnit 依賴注入依賴注入
- Struts 依賴注入依賴注入
- 依賴倒置(DIP)與依賴注入(DI)依賴注入
- 依賴注入?依賴注入是如何實現解耦的?依賴注入解耦
- Dagger2 知識梳理(3) 使用 dependencies 和 @SubComponent 完成依賴注入依賴注入
- Android單元測試(6):使用dagger2來做依賴注入Android依賴注入
- dagger2 讓你愛不釋手:基礎依賴注入框架篇依賴注入框架
- ASP.NET Core中的依賴注入(2):依賴注入(DI)ASP.NET依賴注入
- Angular4學習之依賴注入Angular依賴注入
- EJB 3.0開發指南之依賴注入依賴注入
- [譯] 依賴注入?? 哈??依賴注入
- Angular 依賴注入原理Angular依賴注入
- .Net Core — 依賴注入依賴注入
- 理解 Angular 依賴注入Angular依賴注入
- Spring依賴注入Spring依賴注入
- Spring依賴注入---Spring依賴注入
- 依賴注入系列教程依賴注入
- 我看依賴注入依賴注入
- webapi - 使用依賴注入WebAPI依賴注入
- 依賴注入是否值得?依賴注入
- Dagger2 知識梳理(2) @Qulifier 和 @Named 解決依賴注入迷失依賴注入
- 我用段子講.NET之依賴注入(一)依賴注入
- quarkus依賴注入之八:裝飾器(Decorator)依賴注入
- .NET Core基礎篇之:依賴注入DependencyInjection依賴注入
- Asp .Net Core 依賴注入依賴注入
- Spring IOC——依賴注入Spring依賴注入
- 入門系列-依賴注入依賴注入
- C# 依賴注入 & MEFC#依賴注入
- Spring 依賴注入 DISpring依賴注入
- 關於依賴注入(typescript)依賴注入TypeScript
- 什麼是依賴注入依賴注入
- .NET8 依賴注入依賴注入
- spring 的依賴注入Spring依賴注入
- 深入淺出依賴注入依賴注入
- C# Unity依賴注入C#Unity依賴注入