android MVP-多型号演示者';s

android MVP-多型号演示者';s,android,android-mvp,Android,Android Mvp,计划为MVC类型的android应用程序实施MVP架构。我关心的是如何让一个演示者拥有多个 模型 通常,演示者的构造函数如下所示: MyPresenter(IView视图,IInteractor模型) 这样,我可以在测试和模拟视图和模型时轻松地交换依赖项。但是,假设我的演示者与一个必须是多个网络呼叫的活动相关联。例如,我有一个活动为登录调用API,然后是另一个为安全问题调用API,然后是第三个为GetFriendsList。所有这些调用都在同一活动主题中。如何使用我上面展示的构造函数实现这一点?

计划为MVC类型的android应用程序实施MVP架构。我关心的是如何让一个演示者拥有多个 模型

通常,演示者的构造函数如下所示:

MyPresenter(IView视图,IInteractor模型)


这样,我可以在测试和模拟视图和模型时轻松地交换依赖项。但是,假设我的演示者与一个必须是多个网络呼叫的活动相关联。例如,我有一个活动为登录调用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表示输入。我不认为这是正确的,但消息来源足够可靠。这是有道理的