gpt4 book ai didi

kotlin - 将参数存储库传递给 ViewModel 而不是从 AndroidViewModel 继承是个好主意吗?

转载 作者:行者123 更新时间:2023-12-02 13:11:39 25 4
gpt4 key购买 nike

代码 A 来自 https://github.com/android/architecture-components-samples/tree/master/PagingWithNetworkSample

代码 B 来自 https://github.com/android/architecture-components-samples/tree/master/PagingSample

我知道我应该使用 AndroidViewModel而不是 ViewModel当我需要使用 Context实例化一个基于数据库的 Room,就像代码 B 一样。

我找到了类(class)SubRedditViewModel在代码 A 中不继承自 AndroidViewModel ,它通过参数repository使用构造函数。

传递参数 repository 是个好主意吗?至ViewModel而不是继承自 AndroidViewModel ?

代码 A

class SubRedditViewModel(
private val repository: RedditPostRepository,
private val savedStateHandle: SavedStateHandle
) : ViewModel() {
...
}

代码 B
class CheeseViewModel(app: Application) : AndroidViewModel(app) {
val dao = CheeseDb.get(app).cheeseDao()
...
}

最佳答案

继承AndroidViewModel的那一刻,由于您依赖于 Android 框架,您的类的可单元测试性会降低。此外,在您的代码段 B 中,您失去了为 dao 注入(inject)测试替身的能力。 ,使测试更加困难。

总之,尽量避免使用框架类并练习依赖注入(inject)(手动或借助像 Dagger 这样的 DI 框架,没关系)。因此,您的代码段代码 A 会更可取。

关于kotlin - 将参数存储库传递给 ViewModel 而不是从 AndroidViewModel 继承是个好主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61113221/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com