@
ukyoo 我觉得你说的很具体了,那可以讨论一下几个具体的点:
1. ",在 ViewModel 只是应该调用 Repo 来直接获取加工好的数据":这点可以这样考虑,比如同样一个购物车信息的 Repo 可以被多个地方调用(甚至是同一个 Repo 的同一个 API ),但展示出来的方式可能略有不同,所以你可能会分别在 ViewModel 内做一些针对不同 UI 元素的数据后置处理(比如把给每个标题加上 1234 的顺序索引),我觉得 Repo 不需要承担 100% 的源数据处理工作,更多的是做好偏下层的通用性处理,ViewModel 可以有一点点真正对 "View" 的 "Model" 的处理;
2. "把 ViewModel 里 LiveData 的引用传递给 Repo":正如前面讨论的,LiveData 更多是要在 ViewModel 和 View 这边去发挥作用,而 Repo 本身是可以被更多地方使用,例如几个 Repo 之间可以互相调用,也即现在比较普遍的模块化框架下几个模块之间的功能互相 invoke,这种情况下我们并不需要 LiveData,而是使用如题所说的 Rx,如果要做这个方案,那么就得把大量的 Repo 里的 API 提供两套接口,一套没有 LiveData 一套有,不过也不能说不是一种解法吧。