Dagger2使用心得

简介

Dagger2目前是有Google公司接手。
它是一个依赖注入框架,可以使类与类之间解耦,较少过分依赖。比如在A类中引用B类的实例,通常方法是在A类中new一个B类,但是这样违背了单一职责原则;当我们想创建实例B的时候传入参数,就要改B类的构造函数,不符合开闭原则。当然这样写也无可厚非,但是不利于快速开发和维护,后期版本迭代必然会产生很多不必要的工作量,烦啊!

官方Github地址

官方主页

项目中结合MVP设计

Module


@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层用来处理业务逻辑,比如网络请求就放在这里

Component


@PerActivity
@Component(modules = PhotoModule.class)
public interface PhotoComponent {
void inject(PhotoActivity activity);
}

Activity

PhotoActivity中调用


@Override
protected void initInjector() {
DaggerPhotoComponent.builder()
.photoModule(new PhotoModule(this, mPhotoId))
.build()
.inject(this);
}

你可能感兴趣的:(Dagger2使用心得)