我正在创建一个安卓应用程序,我编写了下面的类、接口和代码.Because,我尝试使用MVP模式,但现在我不确定我的代码是否是标准的?我是否应该使用Dagger2作为Di?模型、演示者类如下:
public class ChangePasswordModel{
public void saveChange(final String oldPass, final String newPass, final ChangePasswordCallback callback) {
/*in real world it change password with API*/
callback.onDo();
} }我的推荐人是:
public class ChangePasswordPresenter{
private ChangePasswordContract.View mView;//this is an interface to interact with Activity
public ChangePasswordPresenter(ChangePasswordContract.View mView) {
this.mView = mView;
}
public void pSaveChange(String oldPass, String newPass) {
ChangePasswordModel model = new ChangePasswordModel();
model.saveChange(oldPass, newPass, new ChangePasswordCallback() {
@Override
public void onDo() {
mView.showMessage("password Changed");
}
});
}}
发布于 2016-10-11 08:02:10
您在问题中提到的示例代码是MVP的正确实现,可以通过一些更改得到改进。
最佳实践是Dagger、MVP、RxJava、Retrofit和Mock测试的混合物,这些测试提高了项目的质量和可读性。MVP帮助您使用干净和独立的分层代码,RxJava将帮助将不同的层连接到一起,Dagger2确实可以帮助您管理依赖关系,并使您在测试中的模拟变得容易。
您可以查看这个使用Dagger、MVP开发的Github上的示例项目回购,还有一些可用的测试:
报盘
发布于 2016-10-16 23:23:53
在我看来,它需要改进。您的模型类必须是一个具体的对象类,但是您的ChangePasswordModel包含不知道为什么要调用callback的saveChange()方法。此逻辑必须在演示器类中实现。
遵循MVP设计模式的基本过程如下:
<your.main.package>.signupscreen。SignupView接口:
interface SignUpView {
String getFirstName();
String getLastName();
String getEmailAddress();
String getPassword();
}SignupActivity实现了SignUpView,并保存了SignupPresenter的引用。
public class SignUpActivity implements SignUpView {
@Inject
public Service mService;
SignUpPresenter mSignUpPresenter;
@Override
protected void onStart() {
super.onStart();
mSignUpPresenter = new SignUpPresenter(mService, this);
}
@Override
protected void onStop() {
super.onStop();
if (mSignUpPresenter != null) {
mSignUpPresenter.onStop();
}
}
@Override
public String getFirstName() {
return etFirstName.getText().toString().trim();
}
@Override
public String getLastName() {
return etLastName.getText().toString().trim();
}
@Override
public String getEmailAddress() {
return etEmail.getText().toString().trim();
}
@Override
public String getPassword() {
return etPassword.getText().toString().trim();
}
}最后是SignupPresenter类:
class SignUpPresenter implements SignUpCallback {
private final Service service;
private final SignUpView view;
private CompositeSubscription subscriptions;
SignUpPresenter(Service service, SignUpView view) {
this.service = service;
this.view = view;
this.subscriptions = new CompositeSubscription();
}
void onStop() {
subscriptions.unsubscribe();
}
}这是基于MVP的活动的基本实现。我确实建议大家看看这个关于MVP,Retrofit和Dagger 2,一款简单的带有MVP、Dagger、RxJava和Retrofit的Android应用程序的很棒的医生。
https://stackoverflow.com/questions/39944656
复制相似问题