使用Android架构组件和MVVM模式,我有一些疑问。
基于网络上的大多数示例,通常有一些简单的例子。
拥有Room的实体
@Entity
public class User{
...
}
有一个DAO
@Dao
public interface UserDao{
...
}
拥有存储库
public class UserRepository{
}
视图模型
public class UsersListViewModel extends AndroidViewModel{
....
}
现在让我们对user
user_access
和user_actions
进行扩展,因此有3个表。
问题:
对于Room I中的每个表,创建实体。我应该为每个实体(userDao,userAccessDao,userActionsDao)或只是一般的Dao
类提供3个AppDao
吗?
同样适用于Repository。整个应用程序的一个存储库或每个Entitiy的存储库(RepositoryUser,RepositoryUserAccess,RepositoryUserActions?
如果我的应用有一个主要活动和多个片段,我应该为每个片段创建一个ViewModel吗?
答案 0 :(得分:13)
你应该有一个上下文的DAO,假设一个UserDao应该包含与用户相关的查询,如果你的应用程序中有帖子,你应该有一个PostDao用于与帖子相关的所有内容。
存储库的逻辑相同,请记住类的单一责任原则,遵循该原则,您应该为每种实体分隔存储库(UserRepository,PostRepository ...)。
在描述为Jetpack的所有新概念之后,每个片段应该有一个viewmodel,除非出于一个奇怪的原因,你有两个片段需要完全相同的逻辑,并且由于片段的目标是被重用。