我有一个相当大的应用程序,由几个模块组成:repo
和filebrowser
,等等。
虽然filebrowser
取决于repo
,但情况并非相反。
现在,我想将对Repository
中的类repo
的依赖项注入到ViewHolder
中的filebrowser
中。该Repository
对象应该与在模块{{1}中的RepoAccessApplication
中创建的对象相同,并且也将被注入到其他模块中。
我无法将repo
中的组件注入repo
中,因为这将需要ViewHolder
依赖于repo
。
同时,我无法在filebrowser
中创建自己的组件,因为这将违背单例的目的(我也需要在其他模块中注入相同的filebrowser
对象)< / p>
我已经简要了解了子组件,但似乎需要向父组件注册它们,这又需要Repository
依赖于repo
。
即使没有丑角,我想做的事情也是可能的。它需要在filebrowser
中创建Repository
对象,然后使用RepoAccessApplication
中的一个活动将其(通过2个嵌套适配器和另一个filebrowser
)传递给{{1} }实际需要它。
我现在的问题是,使用Dagger是否可以更优雅地实现这一目标。
我在Dagger和DI方面的经验仅限于6到8个在线教程。我掌握了一些基本知识并开始运行,并对模块,组件和作用域以及功能和构造类中的部门有一个简要的了解。除此之外,我是绝对的初学者。
当前的解决方案是坚持使用静态引用,而完全忽略DI。该代码看起来很干净,尽管在可测试性方面不是很好。