我正在研究新的Android Architecture Components,并希望将其实现到Android应用程序中。我熟悉MVVM,因为我在iOS开发中使用这种范例。通过阅读谷歌提供的Android Architecture Components指南:https://developer.android.com/topic/libraries/architecture/guide.html,我只有几个问题...
在上述指南中,谷歌使用了
我的担忧是:这似乎意味着Google主张根据ViewModel的基础创建存储库类。这对我来说听起来很不妥,在应用程序中有如此多的单例类。如果我们有10个屏幕,每个屏幕都需要自己的
解决方法是,创建一个中介(Repository)类,该类具有公共方法,暴露从REST API获取数据的API。Web服务部分将在其自己的类中。通过这种方式,我们可以得到良好的关注点分离。
是将每个ViewModel拥有一个repository类最佳实践,还是整个应用程序只有一个repository类?我不确定。
最后,在使用
在上述指南中,谷歌使用了
UserRepository
类来访问这些Web服务API-他们继续将此类设置为Singleton
,如果仅有一个屏幕需要从REST API获取数据,那么这可能没问题。我的担忧是:这似乎意味着Google主张根据ViewModel的基础创建存储库类。这对我来说听起来很不妥,在应用程序中有如此多的单例类。如果我们有10个屏幕,每个屏幕都需要自己的
Repository module
- 那么我们就有了10个单例对象。从iOS开发者的角度来看,这是不正确的。解决方法是,创建一个中介(Repository)类,该类具有公共方法,暴露从REST API获取数据的API。Web服务部分将在其自己的类中。通过这种方式,我们可以得到良好的关注点分离。
是将每个ViewModel拥有一个repository类最佳实践,还是整个应用程序只有一个repository类?我不确定。
最后,在使用
Room
时也存在同样的问题-谷歌是否在说我们要根据ViewModel创建一个数据库,还是在整个应用程序中只有一个数据库?