首页 > 解决方案 > Dagger - 依赖注入

问题描述

这个解决方案是否正确,或者我应该为每个 Activties 创建单独的 FragmentBuildersModules?

@Suppress("unused")
@Module
abstract class ActivityModule {

    @ContributesAndroidInjector(modules = [FragmentBuildersModule::class])
    abstract fun contributeMainActivity(): MainActivity

    @ContributesAndroidInjector(modules = [FragmentBuildersModule::class])
    abstract fun contributeLoginActivity(): LoginActivity
}

标签: androiddependency-injectiondagger

解决方案


除非活动重用相同的片段,否则它们应该依赖于不同的片段模块。这有几个不同的原因:

1) 您遵守 SOLID 的单一责任原则

2)您的代码仍然易于阅读和重用(例如:如果您只需要重用另一个项目中的一个活动,您可以轻松地将其与其依赖关系图一起移植);

3)您的代码更易于维护(例如:如果有人将来必须使用您的代码,他们会立即知道哪些片段属于哪些活动);

4)您的代码不易出错(例如:如果您以某种方式弄乱了您的片段模块,它只会影响一个活动);

5) 可能是我现在不记得的其他原因:)


推荐阅读