每个实体的Android MVVM ViewModel和Repositories?

Ali*_*lin 16 android mvvm android-architecture-components android-jetpack

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

基于Web上的大多数示例,通常有简单的示例.

  1. 有一个房间实体 @Entity public class User{ ... }

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

  3. 有一个存储库 public class UserRepository{ }

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

现在让我们来扩展这个和旁边useruser_accessuser_actions举例来说,这么有3个表.

问题:

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

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

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

Eur*_*tré 20

1

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

2

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

3

遵循描述为Jetpack的所有新概念,每个片段应该有一个viewmodel,除非出于一个奇怪的原因,你有两个片段需要完全相同的逻辑,并且由于片段的目标是要重用,所以不太可能发生.