16

谷歌 IO 17 上发布了新的 Android 架构组件。

那么我们应该将 MVP 与架构组件和 MVVM 一起使用吗?

在 Github 上的 google 示例中,他们使用了 MVVM 模型。 谷歌示例

4

2 回答 2

13

关于架构模式的选择及其实现,总是取决于团队成员、应用程序类型等诸多因素。
在谷歌的博文中,他们已经说过架构组件主要是

意见不是处方。

但是,开发了三个主要组件 ( Room, ViewModel, ViewData) 以广泛使用,但不专注于任何特定模式。
例如,

  • 如果你使用 SQLite 在你的应用中持久化本地数据,无论你使用什么样的模式,你都可以 Room,它确实是一个很棒的库,有很多好处,比如减少样板代码,在编译中验证 SQLite 语法时间等
  • 此外,LifeCycle、LiveData 和 ViewModel 各有长处。特别是,它们很好地解决了生命周期处理问题。
  • LiveData 为您提供了另一种观察者模式的工具,它可以反应地处理数据流。(就像 RxJava 为我们提供的一个很棒的特性)。
  • ...

最后,为你的问题。

那么我们应该将 MVP 与架构组件一起使用吗?

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

更新:
如果您想了解 MVP 模式项目如何与新的架构组件一起使用,请查看我在 Github 上的存储库。在其中,我通过使用 Room 进行本地持久性和 LifeCycle 创建生命周期感知的 Presenter 来增强以前的 MVP 模型。

于 2017-05-29T06:09:29.090 回答
5

我目前正在构建一个模板项目,该项目使用 MVP 模式以及 Google 架构组件(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

我还使用带有 Realm、Dagger 2、实时数据的新 Google 架构组件使用 MVVM 创建了一个项目:https ://github.com/duyp/mvvm-template

快乐编码!

于 2017-09-19T07:30:12.170 回答