繁体   English   中英

关于MVP模式Android的困惑

[英]Confusion about MVP pattern Android

我经历了近2.5年的Android开发人员,他在Activity类中编写所有代码都很简单。

最近我遇到了许多关于开发的好东西,这将使开发人员生活变得非常棒。

  1. 改造
  2. RxJava / RxAndroid
  3. 匕首
  4. MVP模式
  5. 测试代码(单元测试)

我学到了什么(至少从项目开始)

  1. 改造

  2. RxJava / RxAndroid

我对MVP的困惑是什么?

有些人遵循代码风格

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

但是,我跟着

  • 查看(界面)
  • Presenter(Class)--- implements - > [PresenterForView(Interface)&PresenterForInteractor(Interface)]
  • PresenterForView(接口) - 它适用于View (例如,在View中点击登录按钮, 即活动 )。 View查看登录并提供给Interactor
  • PresenterForInteractor(接口) - 它适用于Interactor (例如,从Interactor获取响应,如成功,无法在View中显示, 即Activity )。
  • Interactor(Class):执行验证逻辑,调用webservice(使用Rxjava和Retrofit), 返回PresenterForInteractor的NoNetwork,TimeOut,Failure,Success响应

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

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

我试图遵循在Interactor中编写每个应用程序登录的第一选项

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

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

在两个用例中,

  • onActivityResult
  • onRequestPermission

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

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

presenter.getDataFromTheWeb()

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM