android - 对 ViewModel Provider Factory 的需求
问题描述
我想知道为什么构造函数中具有不同参数的 ViewModel 需要 ViewModel Provider Factory 。为什么不能使用常规构造函数实例化 ViewModelnew MyViewModel(parameter1 , parameter2);
解决方案
没有什么能阻止您使用关键字创建ViewModel
对象。new
本质上,当没有提供构造函数参数时,这就是 Factory Provider 在内部所做的事情,但是还有其他功能围绕着它。例如生命周期管理。ViewModel 特别绑定到生命周期结构,例如片段和活动。当事情变得足够复杂时,您将需要对象工厂来进行依赖管理。
对于您给出的简单示例
val vm = MyViewModel(height=10, weight=20)
创建这些身高和体重对象更容易,因为它们是整数,但如果它是一个复杂的依赖关系,例如
val vm = MyViewModel(repo=MyRepository())
如果MyRepository
反过来可能依赖于改造,房间数据库,共享偏好..等
现在这就是工厂模式发挥作用的地方。使用 Dagger 等依赖注入工具可以轻松地自动生成工厂模式。
工厂模式用于复杂的依赖提供机制。
推荐阅读
- apache-kafka - 代理不可用后自动重启 Quarkus 微服务
- javascript - 如何为 React.js 中动态生成的页面生成站点地图
- c - 为什么在这个程序中 return n 是可选的?
- python - JSON Post 正文未按预期解析
- javascript - Webpack:404 图像未找到(已解决)
- sql - IIF 函数返回不正确的计算值 - SQL Server
- javascript - 从数据键值中删除字符
- arrays - 竞争程序员手册,最长递增子序列 - 需要解释
- python-3.x - 从 excel 文件创建数据框
- opencv - 如何判断 BoxPoints(rect) 输出中的最低点是边界框的右下角还是左下角?