每个实体的Android MVVM ViewModel和Repositories?

时间:2018-06-13 19:22:47

标签: android mvvm android-architecture-components android-jetpack

使用Android架构组件和MVVM模式,我有一些疑问。

基于网络上的大多数示例,通常有一些简单的例子。

  1. 拥有Room的实体 @Entity public class User{ ... }

  2. 有一个DAO @Dao public interface UserDao{ ... }

  3. 拥有存储库 public class UserRepository{ }

  4. 视图模型 public class UsersListViewModel extends AndroidViewModel{ .... }

  5. 现在让我们对user user_accessuser_actions进行扩展,因此有3个表。

    问题:

    1. 对于Room I中的每个表,创建实体。我应该为每个实体(userDao,userAccessDao,userActionsDao)或只是一般的Dao类提供3个AppDao吗?

    2. 同样适用于Repository。整个应用程序的一个存储库或每个Entitiy的存储库(RepositoryUser,RepositoryUserAccess,RepositoryUserActions?

    3. 如果我的应用有一个主要活动和多个片段,我应该为每个片段创建一个ViewModel吗?

1 个答案:

答案 0 :(得分:13)

1

你应该有一个上下文的DAO,假设一个UserDao应该包含与用户相关的查询,如果你的应用程序中有帖子,你应该有一个PostDao用于与帖子相关的所有内容。

2

存储库的逻辑相同,请记住类的单一责任原则,遵循该原则,您应该为每种实体分隔存储库(UserRepository,PostRepository ...)。

3

在描述为Jetpack的所有新概念之后,每个片段应该有一个viewmodel,除非出于一个奇怪的原因,你有两个片段需要完全相同的逻辑,并且由于片段的目标是被重用。