为什么存储库发送到 ViewModel 的构造函数?
Why repository sends to constructor of ViewModel?
我正在使用 MVVM
研究 Google 架构组件,并注意到存储库发送到 ViewModel
的构造函数。问题是为什么存储库不能作为 ViewModel
中的 属性 字段存在?一些开发人员在存储存储库的地方创建 Factories
并用它初始化 ViewModel。这样做的原因是什么? MVVM
表示 View
根本不需要知道 Model
。那么,为什么存储库不只是作为一个字段保留在 ViewModel
处?
总体上是不好的做法。更好的方法是注入 ViewModel 以进行更好的测试。
通常情况下,存储库在 ViewModel 的生命周期内不会更改。将它作为委托人的参数而不是 属性 提供,可确保它无法更改,并且 ViewModel 中的代码可以依赖它。
如果它是 属性,它可以在 ViewModel 的生命周期内更改。您的代码可以从一个数据库加载对象,并在需要保存时找到指向不同数据库的存储库。
我正在使用 MVVM
研究 Google 架构组件,并注意到存储库发送到 ViewModel
的构造函数。问题是为什么存储库不能作为 ViewModel
中的 属性 字段存在?一些开发人员在存储存储库的地方创建 Factories
并用它初始化 ViewModel。这样做的原因是什么? MVVM
表示 View
根本不需要知道 Model
。那么,为什么存储库不只是作为一个字段保留在 ViewModel
处?
总体上是不好的做法。更好的方法是注入 ViewModel 以进行更好的测试。
通常情况下,存储库在 ViewModel 的生命周期内不会更改。将它作为委托人的参数而不是 属性 提供,可确保它无法更改,并且 ViewModel 中的代码可以依赖它。
如果它是 属性,它可以在 ViewModel 的生命周期内更改。您的代码可以从一个数据库加载对象,并在需要保存时找到指向不同数据库的存储库。