Dagger 文档显示了使用 aProvider<Filter>
来获取Filter
实例,这似乎很有意义。
我正在编写一个ListAdapter
实例化视图,我希望 Dagger 注入它。我很想将 aProvider<ViewType>
注入我的ListAdapter
, 并调用mViewProvider.get()
实例化视图。
但是,Dagger 文档说:
注入
Provider<T>
可能会创建令人困惑的代码,并且可能是图形中范围错误或结构错误的对象的设计气味。通常你会想要使用 aFactory<T>
或 aLazy<T>
或者重新组织代码的生命周期和结构,以便能够只注入 aT
我可以看到如何以与使用辅助注射时所需的方式类似的方式使用工厂。
但是,考虑到我必须自己编写前者,使用我自己Factory<T>
的比使用 Dagger's 有什么优势?Provider<T>