簡體   English   中英

Android中的MVP實施

[英]MVP Implementation in Android

我正在研究Android中的MVP架構實現。 我在Android Studio中發現了太多實現問題的方法(問題的提法結尾),但我仍然感到困惑。

有人可以幫助我找到以下問題的正確答案。

  • MVP中Application的目錄結構是什么?
  • 活動應該是Presenter還是View?

方式1

方式2

MVP中Application的目錄結構是什么?

  • 沒有預定義的結構。 是什么使您的代碼易於閱讀或遵循的結構,也可以將其用於MVP。

活動應該是Presenter還是View?

  • 視圖是UI層,用於顯示數據並通知Presenter用戶操作。 因此,Activity將永遠是一個視圖。

如果您正在尋找實現MVP的一個很好的例子,那么有一個Android本身為MVP開發的GitHub Repo 您應該研究的。

哪里

待辦事項

  • 演示了基本的Model-View-Presenter(MVP)體系結構,並提供了構建其他示例的基礎。 該樣本還可以作為比較和對比此項目中其他樣本的參考點。

todo‑mvp‑clean

  • 使用Clean Architecture中的概念。

todo‑mvp‑匕首

  • 使用Dagger 2添加對依賴項注入的支持。

todo‑mvp‑rxjava

  • 使用RxJava 2實現並發,並抽象數據層。

todo‑mvvm‑數據綁定

  • 基於todo-databinding示例,此版本合並了Model‑View‑ViewModel模式。

todo‑mvvm‑live

  • 在架構組件中使用ViewModels和LiveData,在MVVM架構中使用數據綁定庫。

盡管MVP架構有很多實現,但是它們都有一個基本概念(或者至少應該如此),這將業務邏輯與您的視圖(活動,片段,對話框)分開。 這是為什么? 好吧,主要有兩個原因:

  1. 關注點分離
  2. 可測試性:如果不涉及android組件,則可以測試您的業務邏輯。

關於您的問題:

MVP中Application的目錄結構是什么?

除應識別您的MVP組件外,沒有其他規則。 在這里,您有一篇文章是從包結構開始的,但后來我發現其他更方便的了。

活動應該是Presenter還是View?

您的活動(或片段或負責顯示視圖組件的任何組件)應該是實現您的視圖的活動。

我的建議是,您應該檢查多個示例,並查看每個示例的優缺點,並嘗試從您會更喜歡的示例中定義自己的體系結構。

您可以將“ Activity或“ Fragment用於“ 視圖”層。 這是因為在android中顯示UI元素需要Context

對於Presenter層,必須確保不要通過構造函數或setter將Context傳遞給Presenter 如果您在Presenter中需要Context來執行除顯示UI之外的任務,例如寫入SharedPreferences ,則可以從View (為ActivityFragment )中獲取它。 這樣,如果View被破壞或變為null ,則Presenter中將沒有獨立的null Context導致泄漏問題。

如果您想了解更多有關MVP結構的信息,我已經為Android編寫了一個非常方便的MVP庫 ,並在此處的示例應用程序中說明了其用法。

MVP android示例示例應用程序 MVP Android Example用來解釋如何在我們的Android應用程序中使用此模式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM