Dependency Injection

Dependency Injection

温馨提示:本文最后更新于2025-12-19 15:24:43,某些文章具有时效性,若有错误或已失效,请在下方留言

在现代 Android 开发中,依赖注入(Dependency Injection,DI)是一种设计模式,用于简化应用中各个组件之间依赖关系的管理。

依赖注入是一种设计思想:对象不自己创建依赖,而是由外部把依赖“注入”进来。

无 DI

无依赖注入,依赖在类的内部创建, Car 创建了自己的 Engine 对象。

// Engine.kt
class Engine {
    // 单表达式函数
    fun start() = "Engine Started"
}
// Car.kt
class Car {
    // 创建 Engine 对象依赖对象
    // 依赖在类的内部创建,Car 创建了自己的 Engine 对象
    private val engine = Engine()

    fun drive() {
        println(engine.start())
    }
}
package com.stewednoodles.diapp

import org.junit.Assert.*
import org.junit.Test

class CarTest {
    @Test
    fun drive() {
        Car().drive()
    }

}

// 输出
// Engine Started

有 DI

// Engine.kt
class Engine {
    // 单表达式函数
    fun start() = "Engine Started"
}
class Car(private val engine: Engine) {
    // 依赖从外部传入
    fun drive() {
        println(engine.start())
    }
}
class CarTest {
    @Test
    fun drive() {
        val engine = Engine()
        val car = Car(engine = engine)
        car.drive()
    }
}

// 输出
// Engine Started

DI 常见方式

构造函数注入⭐️

class UserRepository(
    private val api: UserApi
)

Setter 注入

class UserRepository {
    lateinit var api: UserApi
}

不安全(可能忘记注入)

字段注入

@Inject lateinit var repository: UserRepository

Android 框架常见。

© 版权声明
THE END
喜欢就支持一下吧
点赞0赞赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容