为什么存储库发送给ViewModel的构造函数?

时间:2018-10-04 09:16:00

标签: android mvvm viewmodel

我正在研究MVVM的Google建筑组件,并注意到存储库发送给ViewModel的构造函数。问题是,为什么存储库不能作为属性存在于ViewModel中?一些开发人员在存储库中创建Factories,并使用它初始化ViewModel。这样做的原因是什么? MVVM告诉View完全不需要了解Model。那么,为什么存储库不仅仅停留在ViewModel字段中?

2 个答案:

答案 0 :(得分:1)

这是总体上的不良做法。最好将ViewModel注入以进行更好的测试。

答案 1 :(得分:1)

通常,存储库在ViewModel的生命周期内不会更改。提供它作为委托人的参数而不是属性,可以确保它不能被更改,并且ViewModel中的代码可以依赖它。

如果它是属性,则可以在ViewModel的生存期内进行更改。您的代码可以从一个数据库中加载一个对象,并在需要保存时找到指向另一个数据库的存储库。