Map*_*apX 5 android clean-architecture kotlin-coroutines
我想问您是否知道以干净的架构方式使用协程的最佳实践是什么。
我的实现使用表示层(片段+ ViewModel)、域(实体+用例)和数据层(带房间的存储库)
例如,当设置新条目时,项目的一部分会从 Room 表更新 RecyclerView。
我有一个在数据层中有一个 LiveData 列表的 Dao:
@Dao
interface UsersDao {
@Insert
suspend fun insertUser(user: UserDB): Long
@Query("SELECT * FROM " + USERSTABLE)
fun getUsers(): LiveData<List<UserDB>>
}
Run Code Online (Sandbox Code Playgroud)
数据层的用户存储库:
val users: LiveData<List<UserEntity>> = Transformations.map(
dao.getUsers()
) { it.map { mapperDBtoEntity.mapFrom(it) } }
override fun getUsers(): LiveData<List<UserEntity>> {
return users
}
Run Code Online (Sandbox Code Playgroud)
领域层的用例:
class GetUsersUseCase (
private val usersRepository: UsersRepository
) {
fun invoke() = usersRepository.getUsers()
}
Run Code Online (Sandbox Code Playgroud)
最后是 ViewModel(表示层)中的调用
var users: LiveData<List<UserEntity>> = getUsersUseCase.invoke()
Run Code Online (Sandbox Code Playgroud)
我的疑问或问题是我不确定我是否正在实现通过用例将 ViewModel 中的用户实时数据与存储库连接的正确方法。
在网络中,我只看到没有用例的示例,它们将 viewModel 直接与存储库连接。
| 归档时间: |
|
| 查看次数: |
714 次 |
| 最近记录: |