android MVP+Dagger2
《Android MVP设计模式最佳实现》,我们在这篇文章的基础上加上Dagger2后应用。为什么要这样做呢?第一,MVP的结构模式,已让我们获得了一个不错的可维护、易于维护的结构。而用Dagger2而是为了使用我们的程序设计变得更加松耦合。参考《什么是Dagger2?》1.创建LoginModule、AppModule:提供注入对象@Modulepublic class LoginModule
·
《Android MVP设计模式最佳实现》,我们在这篇文章的基础上加上Dagger2后应用。为什么要这样做呢?
第一,MVP的结构模式,已让我们获得了一个不错的可维护、易于维护的结构。而用Dagger2而是为了使用我们的程序设计变得更加松耦合。
参考《什么是Dagger2?》
1.创建LoginModule、AppModule:提供注入对象
@Module
public class LoginModule {
@Provides
public LoginActivityMVP.Presenter provideLoginActivityPresenter(LoginActivityMVP.Model model){
return new LoginActivityPresenter(model);
}
@Provides
public LoginActivityMVP.Model provideLoginActivityModel(LoginRepository repository){
return new LoginModel(repository);
}
@Provides
public LoginRepository provideLoginRepository(){
return new UserRepository();
}
}
@Module
public class AppModule {
private Application application;
public AppModule(Application application) {
this.application = application;
}
@Provides
@Singleton
public Context provideContext() {
return application;
}
}
2.定义Component:定义module与注入点所在类的关系
@Singleton
@Component(modules = {AppModule.class, LoginModule.class})
public interface AppComponent {
void inject(LoginActivity target);
}
3.标记注入点
public class LoginActivity extends AppCompatActivity implements LoginActivityMVP.View{
@Inject
LoginActivityMVP.Presenter presenter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
// 传入当前对象,才会将module提供的注入对象注入到@Inject注解的变量上。
((App)getApplication()).getComponent().inject(this);
// LoginRepository repository = new UserRepository();
// LoginActivityMVP.Model model = new LoginModel(repository);
// presenter = new LoginActivityPresenter(model);
}
}
更多推荐


所有评论(0)