把玩Kotlin依賴注入框架Koin
簡要介紹
Koin是一個Kotin極輕量的依賴注入框架,據官方資料顯示,它無代理,無程式碼生成,無反射。
把玩手法
- 新增依賴
//Koin for android implementation 'org.koin:koin-android:2.0.0-rc-1' //Koin for scope feature implementation "org.koin:koin-android-scope:2.0.0-rc-1" //Koin for viewModel feature implementation "org.koin:koin-android-viewmodel:2.0.0-rc-1"
- 新增正常的業務邏輯相關類(與Koin無關)
interface UserRepo { fun getName(): String }
class UserRepoImpl : UserRepo { override fun getName(): String { return "jerry" } }
class UserPresenter(val repo: UserRepo) { fun sayHi() = "Hi,${repo.getName()}" }
- 新增module(敲黑板啦,伴侶關係就是在這裡建立的,相守一生,哈哈)
val appModule = module { single<UserRepo> { UserRepoImpl() } factory { UserPresenter(get()) } }
- 通知boss,初始化
class App : Application() { override fun onCreate() { super.onCreate() startKoin { androidLogger() androidContext(this@App) modules(appModule) } } }
- 隨便玩
- 玩法一
class MainActivity : AppCompatActivity() { private val userPresenter: UserPresenter by inject() override fun onCreate(savedInstanceState: Bundle?) { val msg = userPresenter.sayHi() } }
- 玩法二,隨便get都行
val userPresenter: UserPresenter = get() val msg = userPresenter.sayHi()
Demo原始碼
https://github.com/cxyzy1/koinDemo
介紹完畢,諸君隨意.
附錄
官網介紹: https://beta.insert-koin.io/docs/2.0/getting-started/introduction/
安卓開發技術分享: https://www.jianshu.com/p/442339952f26
更多技術總結好文,請關注:「程式園中猿」
