簡體   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