我正在研究MVVM
的Google建筑组件,并注意到存储库发送给ViewModel
的构造函数。问题是,为什么存储库不能作为属性存在于ViewModel
中?一些开发人员在存储库中创建Factories
,并使用它初始化ViewModel。这样做的原因是什么? MVVM
告诉View
完全不需要了解Model
。那么,为什么存储库不仅仅停留在ViewModel
字段中?
答案 0 :(得分:1)
这是总体上的不良做法。最好将ViewModel注入以进行更好的测试。
答案 1 :(得分:1)
通常,存储库在ViewModel的生命周期内不会更改。提供它作为委托人的参数而不是属性,可以确保它不能被更改,并且ViewModel中的代码可以依赖它。
如果它是属性,则可以在ViewModel的生存期内进行更改。您的代码可以从一个数据库中加载一个对象,并在需要保存时找到指向另一个数据库的存储库。