在网上关于它的资料并不是很多,这也证明它现在并不是很完善,之所以要写一系列关于Kodein
的文章是为保证自己要一直学习新鲜事物。
下面我们着重介绍一下它的作用是什么?相信大家Dagger2
这个框架已经用得很熟了,这里不在花篇幅去介绍Dagger2
的好处,Kodein
就是Dagger2
的替代方案,它更加Kotlin
。
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'
第一步
首先我们定义一个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()}")
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
User(kodein).test()
}