37

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

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

  1. 有一个房间的实体
   @Entity
   public class User{
   ...
   }
  1. 有一个 DAO
    @Dao
    public interface UserDao{
    ...
    }
  1. 有一个存储库
   public class UserRepository{
    }
  1. 视图模型
    public class UsersListViewModel extends AndroidViewModel{
    ....
    }

现在让我们扩展它,并在旁边useruser_accessuser_actions例如,有 3 个表。

问题:

  1. 对于 Room 中的每张桌子,我都会创建实体。我应该Dao为每个实体(userDao、userAccessDao、userActionsDao)设置 3 个还是只是一个普通AppDao类?

  2. 存储库也是如此。整个应用程序的一个存储库或每个实体的存储库(RepositoryUser、RepositoryUserAccess、RepositoryUserActions?

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

4

1 回答 1

41

1

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

2

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

3

遵循所有被描述为 Jetpack 的新概念,您应该每个片段有一个视图模型,除非出于一个奇怪的原因,您有两个片段需要完全相同的逻辑,而且这不太可能发生,因为片段的目标是被重用。

于 2018-06-13T19:30:42.660 回答