当前位置: 首页 > 工具软件 > Kodein-DI > 使用案例 >

学习Kodein(一)

闻人冷勋
2023-12-01

Kodein是什么?

在网上关于它的资料并不是很多,这也证明它现在并不是很完善,之所以要写一系列关于Kodein的文章是为保证自己要一直学习新鲜事物。
下面我们着重介绍一下它的作用是什么?相信大家Dagger2这个框架已经用得很熟了,这里不在花篇幅去介绍Dagger2的好处,Kodein就是Dagger2的替代方案,它更加Kotlin

  1. 我们去官网地址下载相关依赖
implementation 'org.kodein.di:kodein-di-generic-jvm:6.5.0'
implementation 'org.kodein.di:kodein-di-framework-android-???:6.5.0'

可选择替换???
kodein-di-framework-android-x
kodein-di-framework-android-support
kodein-di-framework-android-core

我的工程是androidx的所以引入的代码是这样的

implementation 'org.kodein.di:kodein-di-generic-jvm:6.5.0'
implementation 'org.kodein.di:kodein-di-framework-android-x:6.5.0'
  1. 下面我们看下如何实现Kodein只需2步即可

第一步

首先我们定义一个Module类,生成一个随机数的实例对象。
object Module{
    val kodein = Kodein {
        bind<Random>() with provider {
            Random(100)
        }
    }
}

第二步

定义一个User类,声明一个random常量,使用通过构造函数传进来的kodein对象实例化这个random,接下来我们定义一个test函数,调用random的方法。
class User(kodein: Kodein) {
    val random: Random by kodein.instance()
    fun test() {
        println("----------hexl: ${random.nextInt()}")
    }
}
  1. 在MainActivity中调用即可
override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        User(kodein).test()
    }

over,下一篇我们学习Kodein如何在Android中使用!!!

 类似资料: