在使用协程时,我们如何将域模型映射到网络实体?

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 函数只是执行你到每个列表项的映射,

所以无论如何都需要定义实际的映射,

你知道,函数不知道每个开发者元素做什么,没有共同的相似之处,你在这里将每个元素字段映射到其对应的字段。

【讨论】:

以上是关于在使用协程时,我们如何将域模型映射到网络实体?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用我自己的模型映射 REST 实体

Kotlin回顾9.协程思维模型

从实体框架映射到自定义域模型类?

将资源模型自动映射到 WebAPI 中的实体 - PUT 可为空

将域的 BALL 包装到它自己的类库中是不是合理,我将如何设置它?

如何使用无键实体类型在 EF 模型中定义查询?