关于MVP模式Android

时间:2017-05-25 11:59:31

标签: android architecture mvp

我经历了近2。5年的Android开发人员,他在Activity类中编写所有代码非常简单。

最近,我遇到了许多关于开发的好东西,这将使开发人员的生活更加精彩。

  1. 改造
  2. RxJava / RxAndroid
  3. 匕首
  4. MVP模式
  5. 测试代码(单元测试)
  6. 我学到了什么(至少从项目开始)

    1. 改造

    2. RxJava / RxAndroid

    3. 我对MVP的疑惑

      有些人遵循代码风格

      • 查看(界面)
      • 演示者(界面)
      • PresenterImplementation(Class)
      • 交互者(界面)
      • InteractorImplementation(Class)

      但是,我跟着

      • 查看(界面)
      • 演示者(班级)---工具 - > [PresenterForView(界面)& PresenterForInteractor(接口)]
      • PresenterForView(界面) - 适用于查看(例如,点击查看,即活动中的登录按钮)。从查看进行登录点击,然后转到 Interactor
      • PresenterForInteractor(接口) - 适用于 Interactor (例如,从 Interactor 获取响应,如成功,无法显示 View ie,Activity )。
      • Interactor(Class):执行验证逻辑,调用webservice(使用Rxjava& Retrofit),返回PresenterForInctor的NoNetwork,TimeOut,Failure,Success响应

      很多人都认为Logics(if..else)只能用 Interactor 编写。您的视图(活动),Presenter不应包含(If else语句)应用程序逻辑。

      Medium上发现了许多教程,其中人们可以做任何事情。 他们在 Presenter 中编写半应用逻辑,在 Interactor

      中休息

      我尝试按照 Interactor

      编写每个应用登录的第一选项

      但有一种情况我很困惑在哪里写app登录

      • onActivityResult
      • onRequestPermission
      • 使用第二个活动中的数据从第一个活动通过Intent.putExtras获得(我总是在第二个活动的OnCreate()中使用)

1 个答案:

答案 0 :(得分:0)

在两个用例中,

  
      
  • onActivityResult
  •   
  • onRequestPermission
  •   

我区分逻辑的方式是,如果该逻辑在UI上做任何事情 - UI逻辑(例如:更新文本,显示对话框,动画等)属于Activity / Fragment。因为你只是在那个Activity / Fragment上,所以你可以立即调用它。

如果您需要操作任何业务逻辑,例如:更新数据库,网络请求/响应等。您可能需要通过Presenter调用它。 E.g:

presenter.getDataFromTheWeb()

  
      
  • 使用第二个活动中的数据从第一个活动通过Intent.putExtras获得(我总是在第二个活动的OnCreate()中使用)
  •   

要在Activity / Fragment中检索数据,请使用附带其Activity / Fragment的 getArgument()。因此,您在Activity类中检索数据是有意义的。

总的来说,MVP是解除视图逻辑/应用程序逻辑和业务逻辑的一种很好的方式,也可以帮助您更轻松地测试您的应用程序。但是,使用正确的模式取决于您解决的特定问题。如果您的业务逻辑也很复杂,则需要Interactor模式。