Koin


「私はどこで仕事をしますか」という心理状態で、アンドロイド開発者の就職文章を敬虔に見て、優遇条件の下で、mvp、mvvm、di、rxjavaはほとんど固定されています.(資格要件適合)
mvvvmを除いて、私はいくつかの概念を知っていますが、コードを見るだけでめまいがするので、ずっと回避しています.私も生活しなければなりませんか?diはrxjavaよりもアクセスしやすいように見えるため、googlingを通じてdiに関する文章とdiフレームワークで有名なdagger 2とkoinの文章を読み始めた.
  • dagger2
  • 2日間見ました.daggerのサイトのcoffemakerコードを見なければ今も編集しませんそんなに異種が多いのかわかりませんが、簡単な例を作ってみたいので、翌日に断りました.
  • Koin
  • サイトに行っても、daggerとドキュメントの長さに差があります.
    説明も長くない.
    だいたいdaggerの例coffemakerを読んでみましょうverに変更します.
    class A_Heater :Heater {
        override fun on() {
            Log.d(ContentValues.TAG, "Heater on")
        }
        
        override fun off() {
            Log.d(ContentValues.TAG, "Heater oFF")
        }
        
        override fun isHot():Boolean {
            return true
        }
    }
    
    interface Heater {
        fun on()
        fun off()
        fun isHot():Boolean
    }
    class A_Pump(private val heater: A_Heater) : Pump{
        override fun pump() {
            if (heater.isHot()){
                Log.d(ContentValues.TAG, "커피콩 펌프 되는중")
            }
        }
    }
    
    interface Pump {
        fun pump()
    }
    val appModule :Module = module{
        single { A_Heater()}
        single { A_Pump(get()) }
        factory { CoffeeMaker( get(), get() ) }
    }
    class MainActivity : AppCompatActivity() {
       override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
    
            val coffeeMachine1 by inject<CoffeeMaker>()
            coffeeMachine1.brew()
    
        }
    class myApp : Application() {
    
        override fun onCreate() {
            super.onCreate()
            startKoin {
                androidLogger()
                androidContext(this@myApp)
                modules(listOf(appModule))
            }
        }
    }
    結果値

    class myappはMainActivityでstartKainでもうまく動いているのに、なぜそう分けなければならないのでしょうか.
    私のようにdagger 2が難しいならkoinはどうですか?
    追加のdagger 2は長い間現れていたので、例題はたくさんありますが、koinはそんなに多くありません.