对于 Android 架构组件和 MVVM 模式,我有一些疑问。
基于网络上的大多数示例,通常有简单的示例。
- 有一个房间的实体
@Entity
public class User{
...
}
- 拥有一个 DAO
@Dao
public interface UserDao{
...
}
- 有一个存储库
public class UserRepository{
}
- View 模型
public class UsersListViewModel extends AndroidViewModel{
....
}
现在让我们扩展它,在 user
旁边有 user_access
和 user_actions
例如,所以有 3 个表。
问题:
我为 Room 中的每个表创建实体。我应该为每个实体(userDao、userAccessDao、userActionsDao)分配 3 个
Dao
,还是只分配一个通用的AppDao
类?存储库也是如此。整个应用程序的一个存储库或每个实体的存储库(RepositoryUser、RepositoryUserAccess、RepositoryUserActions?
如果我的应用有一个主要 Activity 和多个 fragment ,我应该为每个 fragment 创建一个 ViewModel 吗?
最佳答案
1
你应该有上下文 DAO,假设一个 UserDao 应该包含与用户相关的查询,如果你的应用程序中有帖子,你应该有一个 PostDao 来处理与帖子相关的所有内容。
2
存储库的逻辑相同,请记住类的单一职责原则,坚持该原则,您应该为每种类型的实体(UserRepository、PostRepository...)创建存储库。
3
遵循所有描述为 Jetpack 的新概念,您应该每个 fragment 有一个 View 模型,除非出于一个奇怪的原因,您有两个 fragment 需要完全相同的逻辑,而这不太可能发生,因为 fragment 的目标是被重复使用。
关于每个实体的 Android MVVM ViewModel 和存储库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50844781/