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