#koin
Тут совсем недавно вышло крутое обновление библиотеки Koin, которое позволяет гораздо проще настраивать сам Koin — Constructor DSL.
Раньше типичный модуль в Koin выглядел следующим образом:
class MyClassA()
class MyClassB(val a : MyClassA)
// Let Koin find dependencies for you with get()
module {
single { MyClassA() }
single { MyClassB(get()) }
}
Как видно, в
MyClassB нужно добавить get() по количеству параметров, которые в этот класс передаются. Если таких параметров будет много, то и число этих get() будет кратно увеличиваться. В новой же версии мы получаем более удобную структуру:
class MyClassA(val id : String)
module {
singleOf(::MyClassA)
}
// in calling code
val classA : MyClassA by inject { parametersOf("_id_")}То есть теперь все вызовы get() останутся в прошлом, и мы получим гораздо более красивый и читаемый код.
Больше примеров кода и инфа о других изменениях по ссылке.