我正在研究谷歌架构组件MVVM
,并注意到存储库发送到ViewModel
的构造函数。问题是为什么存储库不能作为属性、字段存在于ViewModel
?一些开发人员创建存储库存储Factories
,并使用它初始化 ViewModel。这样做的原因是什么?MVVM
告诉View
根本不需要知道Model
。那么,为什么存储库不仅仅停留在ViewModel
作为一个字段呢?
通常,存储库在 ViewModel 的生存期内不会更改。将其作为委托人的参数而不是属性提供可确保它无法更改,并且 ViewModel 中的代码可以依赖它。
如果它是一个属性,则可以在 ViewModel 的生存期内对其进行更改。您的代码可以从一个数据库加载对象,并在需要保存时找到指向另一个数据库的存储库。
这是总体上不好的做法。更好的方法是注入 ViewModel 以获得更好的测试。