android MVP-多型号演示者';s
计划为MVC类型的android应用程序实施MVP架构。我关心的是如何让一个演示者拥有多个 模型 通常,演示者的构造函数如下所示: MyPresenter(IView视图,IInteractor模型)android MVP-多型号演示者';s,android,android-mvp,Android,Android Mvp,计划为MVC类型的android应用程序实施MVP架构。我关心的是如何让一个演示者拥有多个 模型 通常,演示者的构造函数如下所示: MyPresenter(IView视图,IInteractor模型) 这样,我可以在测试和模拟视图和模型时轻松地交换依赖项。但是,假设我的演示者与一个必须是多个网络呼叫的活动相关联。例如,我有一个活动为登录调用API,然后是另一个为安全问题调用API,然后是第三个为GetFriendsList。所有这些调用都在同一活动主题中。如何使用我上面展示的构造函数实现这一点?
这样,我可以在测试和模拟视图和模型时轻松地交换依赖项。但是,假设我的演示者与一个必须是多个网络呼叫的活动相关联。例如,我有一个活动为登录调用API,然后是另一个为安全问题调用API,然后是第三个为
GetFriendsList
。所有这些调用都在同一活动主题中。如何使用我上面展示的构造函数实现这一点?或者,做这类事情的最佳方式是什么?或者我仅限于拥有一个模型并调用该模型中的服务吗?Presenter构造函数只需要视图。您不需要依赖于该模型。定义演示者和类似的视图
public interface Presenter{
void getFriendList(Model1 model);
void getFeature(Model2 model2);
public interface View{
void showFriendList(Model1 model);
void showFeature(Model2 model2)
}
}
现在,您的实现类仅依赖于视图部件
rest您的方法将处理您的模型
class PresenterImpl implements Presenter{
View view;
PresenterImpl(View view){
this.view = view;
}
void getFriendList(Model1 model){
//Do your model work here
//update View
view.showFriendList(model);
}
void getFeature(Model2 model2) {
//Do your model work here
//updateView
view.showFeature(model2)
}
}
如果你看看谷歌本身的开源项目,他们只使用1-1-1方法(这意味着1个视图,1个演示者,1个模型)。每个事务都有一个特定的(Enum和Bundle参数)。Enum决定您将使用什么api,Bundle表示输入。我不认为这是正确的,但消息来源足够可靠。这是有道理的