我有些困惑,我应该把业务登录放在模型和演示者之间的什么地方。一些教程说模型持有业务登录,一些说模型只是POJO。
将业务逻辑放在哪里令人困惑。它应该是模型的一部分。我在模型上创建了一个额外的层,称为对模型执行操作的服务,并且它具有处理模型的逻辑。因此,如果将来我从SQLite更改为Room DB或GreenDao ORM,只需更改有关此的查询,并且我的业务逻辑将保持不变。有些应用程序逻辑不同于应位于表示器中的业务逻辑。
业务逻辑应该在Model
中。应用程序逻辑应为Presenter
例:
public class MyActivity extends BaseActivity implements MyView {
private MyPresenter mPresenter;
@Override public onLoginResponse(LoginResultEntity entity) {
// Handle login result
}
// Some where
mPresenter = new MyPresenter();
mPresenter.attachView(this);
mPresenter.login(loginResquestEntity);
}
public class MyPresenter extends BasePresenter<MyView>{
public void login(LoginResquestEntity loginResquestEntity) {
// Validate info ...
ApiManager.getInstance().login(loginResquestEntity, new Callback() {
@Override public onSuccess(LoginResultEntity entity) {
mMvpView.onLoginResponse(entity)
}
@Override public onError(Throwable throwable) {
mMvpView.onLoginResponse(null)
}
});
}
}
interface MyView extends MvpView {
void onLoginResponse(LoginResultEntity entity);
}
在 MVP 设计模式中 Model 不是我们的 pojo 类,有时我们也称 Model 为存储库。
M-模型(存储库)
V-视图
P-演示者
在模型(存储库)中:- 它的句柄 API,数据库操作等
所以从现在开始,让我们调用 MODEL 作为存储库。