我正在做一些kotlin基础知识的代码实验室,我并没有真正了解ViewModel的android,为什么有时似乎需要通过ViewModelFactory创建它。在这里你可以看到关于这个的代码实验室。
他们只是说使用工厂方法模式执行初始化,但我不明白为什么。为什么我们需要使用工厂模式?是因为我们需要向ViewModel传递一些参数吗?还是其他原因?每次我们需要创建ViewModelFactory只是为了将参数传递给ViewModel吗?
我一直在寻找答案,试图确认是只是为了传递额外的参数,还是因为任何其他原因,但我仍然不确定,我还没有找到答案。
在使用ViewModel
和ViewModelFactory
之前,需要考虑以下几点
ViewModel
是LifecycleAware Components
- CCD_ 5在CCD_
ViewModelProvider' can only instantiate
ViewModel `不带参数构造函数
为什么我们需要使用工厂模式?
若要使用参数实例化ViewModel
,需要使用ViewModelFactory
。ViewModelProviders
实用程序无法创建带有参数构造函数的ViewModel实例,因为它不知道如何以及在构造函数中传递什么对象。
此外,您应该遵循依赖注入原则。类不应该创建所需的依赖项。应该提供而不是创建。
例如
public class LogInViewModel extends ViewModel {
private final LogInRepo repo;
public LogInViewModel (LogInRepo repo) {
/* this.repo = new LogInRepo(); Not recommended, It violates DI principle*/
this.repo = repo;
}
}