You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Clean Architecture MVVM架构中应在哪一层将API对象转换为Adapter适配对象

结论

你的猜测是正确的,这个转换操作优先放在 UseCase层 是最符合分层架构职责划分的选择。

各层可行性分析

我们先明确你当前架构各层的核心职责,再逐一排除不合适的选项:

不建议放在ViewModel层

ViewModel的核心职责是管理UI状态、响应UI交互事件,不应该承载复杂的数据转换/业务组装逻辑。如果把转换放在这里,会导致ViewModel快速臃肿,且这部分转换逻辑无法给其他业务场景复用。

不建议放在Repository层

Repository的核心职责是屏蔽下层数据源(API、本地数据库、缓存等)的差异,对外输出统一的、和UI无关的通用领域模型。你转换后的列表包含了RecyclerView专属的Header类型、完全匹配Adapter的入参要求,属于和UI展示强绑定的模型,放在Repository会导致数据层和UI层耦合,后续如果修改UI展示规则,需要连带修改Repository的逻辑,违背单一职责原则。

放在UseCase层的合理性

UseCase本身就是用来封装独立的、可复用的业务规则的单元。你需要实现的「将原始人员列表按照类型分组、插入分组Header、转换为实现Person接口的适配类」本身就是一个独立的业务逻辑,放在UseCase里刚好可以做到:

  • 从Repository拿到通用的人员领域列表,不需要修改Repository的现有逻辑
  • 处理完的输出直接可以交给ViewModel,ViewModel不需要做额外处理直接传递给Adapter即可
  • 转换逻辑可以复用给其他需要相同处理的业务场景

特殊场景的可选方案

如果你的转换逻辑非常简单,仅需要把PersonApi转换成对应Person1/Person2的实现类,不需要插入Header、排序等业务组装操作,也可以把这部分基础的「API模型转领域模型」的操作放在Repository层完成,这属于数据层的基础职责范围。

架构示意图

内容的提问来源于stack exchange,提问作者user1851366

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 19:45:09