Android 推荐应用架构建议将代码划分为多个类,以从分离关注点这一原则(其中,层次结构的每个类都具有一项已定义的责任)中受益。这就需要将更多更小的类连接在一起,以实现彼此之间的依赖关系。

IOC

android ioc 技术

源码地址:https://github.com/wangchongwei/ioc.git

dagger

dagger使用:
主要使用了工厂模式、APT技术

利用注解处理器,变异时生成大量代码,完成自动注入

dagger 的使用主要作用:不必编写冗长乏味且容易出错的样板代码。

优势

  • Dagger 可以执行以下操作,使您无需再编写冗长乏味又容易出错的样板代码:

  • 生成您在手动 DI 部分手动实现的 AppContainer 代码(应用图)。

  • 为应用图中提供的类创建 factory。这就是在内部满足依赖关系的方式。

  • 重复使用依赖项或创建类型的新实例,具体取决于您如何使用作用域配置该类型。

  • 为特定流程创建容器,操作方法与上一部分中使用 Dagger 子组件为登录流程创建容器的方法相同。这样可以释放内存中不再需要的对象,从而提升应用性能。

只要您声明类的依赖项并指定如何使用注释满足它们的依赖关系,Dagger 便会在构建时自动执行以上所有操作。Dagger 生成的代码与您手动编写的代码类似。在内部,Dagger 会创建一个对象图,然后它可以参考该图来找到提供类实例的方式。对于图中的每个类,Dagger 都会生成一个 factory 类型类,它会使用该类在内部获取该类型的实例。

在构建时,Dagger 会走查您的代码,并执行以下操作:

  • 构建并验证依赖关系图,确保:

    • 每个对象的依赖关系都可以得到满足,从而避免出现运行时异常。
    • 不存在任何依赖循环,从而避免出现无限循环。
  • 生成在运行时用于创建实际对象及其依赖项的类。