在使用协程时,我们如何将域模型映射到网络实体?
Posted
技术标签:
【中文标题】在使用协程时,我们如何将域模型映射到网络实体?【英文标题】:While using coroutines how do we map the domain model to a network entity? 【发布时间】:2021-05-14 06:39:03 【问题描述】:根据 MVVM 架构,必须使用数据映射器类,因为它将实体映射到可在表示层中使用的域。在使用协程时,我们是否明确需要创建一个 Mapper 类。 例如这是 DataMapper 类:
class PermissionDataMapper @Inject constructor()
fun mapEntityToDomain(permissionEntity: PermissionEntity): PermissionDomain
return PermissionDomain(
permissionName = permissionEntity.roleDesc,
permissionId = permissionEntity.roleId
)
fun mapEntityListToDomainList(permissionEntityList: List<PermissionEntity?>): List<PermissionDomain>
return permissionEntityList.map permissionEntity ->
mapEntityToDomain(permissionEntity!!)
在将实体列表映射到域列表的 DataRepositoryClass 中进一步使用:
override fun getSharePermissions(): Observable<List<PermissionDomain>>
return userDataSourceFactory.retrieveRemoteDataSource().getSharePermissions().map
return@map permissonsDataMapper.mapEntityListToDomainList(it)
如果我们使用协程,我们是否需要遵循同样的模式?或者域到实体或实体到域的映射是否在后台自动发生?
【问题讨论】:
【参考方案1】:我想是的, 它必须像这样完成,但更短,协程中的 map 函数只是执行你到每个列表项的映射,
所以无论如何都需要定义实际的映射,
你知道,函数不知道每个开发者元素做什么,没有共同的相似之处,你在这里将每个元素字段映射到其对应的字段。
【讨论】:
以上是关于在使用协程时,我们如何将域模型映射到网络实体?的主要内容,如果未能解决你的问题,请参考以下文章
将资源模型自动映射到 WebAPI 中的实体 - PUT 可为空