简介
Dagger2目前是有Google公司接手。
它是一个依赖注入框架,可以使类与类之间解耦,较少过分依赖。比如在A类中引用B类的实例,通常方法是在A类中new一个B类,但是这样违背了单一职责原则;当我们想创建实例B的时候传入参数,就要改B类的构造函数,不符合开闭原则。当然这样写也无可厚非,但是不利于快速开发和维护,后期版本迭代必然会产生很多不必要的工作量,烦啊!
项目中结合MVP设计
Module
<pre>
@Module
public class PhotoModule {
private final PhotoActivity mView;
private final String mPhotoId;
public PhotoModule(PhotoActivity view, String photoId) {
mView = view;
mPhotoId = photoId;
}
@PerActivity
@Provides
public IBasePresenter providePhotoPresenter() {
return new PhotoPresenter(mView, mPhotoId);
}
}
//PhotoPresenter是P层用来处理业务逻辑,比如网络请求就放在这里
</pre>
Component
<pre>
@PerActivity
@Component(modules = PhotoModule.class)
public interface PhotoComponent {
void inject(PhotoActivity activity);
}
</pre>
Activity
PhotoActivity中调用
<pre>
@Override
protected void initInjector() {
DaggerPhotoComponent.builder()
.photoModule(new PhotoModule(this, mPhotoId))
.build()
.inject(this);
}
</pre>