簡體   English   中英

具有MVP的Android架構組件

[英]Android architecture components with MVP

谷歌IO 17上發布了新的Android架構組件。

那么我們應該將MVP與架構組件和MVVM一起使用嗎?

在Github上的谷歌樣本中,他們使用了MVVM模型。 Google示例

關於架構模式的選擇及其實現,它總是取決於許多因素,如團隊成員,應用程序的類型等。
在Google的博客文章中,他們已經說過架構組件主要是

意見不是處方。

但是,開發了三個主要組件( Room, ViewModel, ViewData ),具有廣泛的用途,但不關注任何特定模式。
例如,

  • 如果您使用SQLite在應用程序中保留本地數據,那么無論您使用何種模式,您都可以使用Room,它實際上是一個很好的庫,具有很多好處,例如減少鍋爐板代碼,在編譯中驗證SQLite語法時間等
  • 此外,LifeCycle,LiveData和ViewModel都有自己的優點。 特別是,它們可以很好地解決生命周期處理問題。
  • LiveData為您提供了另一種觀察者模式工具,可以反應性地處理數據流。 (就像RxJava為我們提供的一個很棒的功能)。
  • ...

最后,為您提問。

那么我們應該將MVP與架構組件一起使用嗎?

答案是“它是Android框架的一個很好的部分,所以為什么不呢”。

更新:
如果您想了解MVP模式項目如何與新的體系結構組件一起使用,請在Github上查看我的存儲庫 我通過使用Room for local persistence和LifeCycle來創建生命周期感知的Presenter來增強以前的MVP模型。

我目前正在構建一個模板項目,它使用MVP模式和Google Architecture組件(Room,LiveData),並與Realm和LiveData的混合版本進行比較:

https://github.com/duyp/mvp-template

我認為一些Google架構組件與MVP模式兼容,不僅適用於MVVM:D

您可以查看以下2個分支

  • realm_livedata :Realm和LiveData的MVP

  • room_livedata :具有Room持久性庫和LiveData的MVP

它比Google sample項目(我使用Dagger 2 ,RxAndroid,Retrofit,Gson和干凈的架構)要復雜得多,希望您能找到更好的解決方案。 如果有任何問題或建議,您可以在my github project上留下評論或問題。

我還創建了一個使用MVVM的項目,其中包含Realm,Dagger 2,Live數據的新Google架構組件: https//github.com/duyp/mvvm-template

快樂的編碼!

暫無
暫無

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

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