用于检索模型的 MVP 模式
MVP pattern for retriving model
我正在使用 MVP 模式开发 android 应用程序。
我想要不同的演示者,每个演示者都实现 getItems
,调用关联模型的 getAll
静态方法。
我想使用泛型,结果是这样的:
public class BasePresenter<T> {
protected T mModel;
List getItems() {
mModel.getAll();
}
}
public class Presenter extends BasePresenter<Model> {
}
但我无法使用泛型访问 getAll
方法,因为它不是 Object
的方法。
因为对我来说,为所有演示者编写同样无聊的方法 getAll()
是愚蠢的,只改变模型,有什么办法可以实现吗?
我问是因为即使在 Google 的官方 MVP 指南中,它也总是使用相同的方法来检索数据,在每个演示者上覆盖它,我希望有更好的方法.
我想 "cast" 超类 mModel
,但我不知道如何以及是否可以这样做。
也许这可以帮到你:
List getItems(){
if(mModel instanceof TheSuperClassOrInterface){
return ((TheSuperClassOrInterface)mModel).getAll();
}else{
return null;
}
}
试试这个
public class BasePresenter<M extends BaseModel<M>> {
@Nullable
private M mModel;
@Nullable List<M> getItems() {
if (mModel != null) {
return mModel.getModelList();
}
return null;
}
}
BaseModel 是
public abstract class BaseModel<M> {
private List<M> modelList;
public List<M> getModelList() {
return modelList;
}
public void setModelList(List<M> modelList) {
this.modelList = modelList;
}
}
子模型
public class LoginModel extends BaseModel<LoginModel> {
@Override
public List<LoginModel> getModelList() {
return super.getModelList();
}
@Override
public void setModelList(List<LoginModel> modelList) {
super.setModelList(modelList);
}
}
最后主持人是这样的
public class LoginPresenter extends BasePresenter<LoginModel> {
//do your code
}
希望对你有帮助。
我正在使用 MVP 模式开发 android 应用程序。
我想要不同的演示者,每个演示者都实现 getItems
,调用关联模型的 getAll
静态方法。
我想使用泛型,结果是这样的:
public class BasePresenter<T> {
protected T mModel;
List getItems() {
mModel.getAll();
}
}
public class Presenter extends BasePresenter<Model> {
}
但我无法使用泛型访问 getAll
方法,因为它不是 Object
的方法。
因为对我来说,为所有演示者编写同样无聊的方法 getAll()
是愚蠢的,只改变模型,有什么办法可以实现吗?
我问是因为即使在 Google 的官方 MVP 指南中,它也总是使用相同的方法来检索数据,在每个演示者上覆盖它,我希望有更好的方法.
我想 "cast" 超类 mModel
,但我不知道如何以及是否可以这样做。
也许这可以帮到你:
List getItems(){
if(mModel instanceof TheSuperClassOrInterface){
return ((TheSuperClassOrInterface)mModel).getAll();
}else{
return null;
}
}
试试这个
public class BasePresenter<M extends BaseModel<M>> {
@Nullable
private M mModel;
@Nullable List<M> getItems() {
if (mModel != null) {
return mModel.getModelList();
}
return null;
}
}
BaseModel 是
public abstract class BaseModel<M> {
private List<M> modelList;
public List<M> getModelList() {
return modelList;
}
public void setModelList(List<M> modelList) {
this.modelList = modelList;
}
}
子模型
public class LoginModel extends BaseModel<LoginModel> {
@Override
public List<LoginModel> getModelList() {
return super.getModelList();
}
@Override
public void setModelList(List<LoginModel> modelList) {
super.setModelList(modelList);
}
}
最后主持人是这样的
public class LoginPresenter extends BasePresenter<LoginModel> {
//do your code
}
希望对你有帮助。